The m4nfo User Manual and Report

Data types

Introduction

m4nfo uses many different data types for its different properties and functions. Using data types helps the user to apply abstraction and to ignore the details of representation.

Each data type defines the set of values a variable (or a function by use of its parameters) may assume. There are either unstructured ("simple") data types as well as structured data types. The latter are to be composed from the former type.

Simple data types

TypeValue range
Char<ASCII_char> | <UTF-8_char>
Boolean[yes, no] | [TRUE, FALSE]
Nibble[0 .. 15]
Cargo-ID[0 .. 31]
Byte[0 .. 255]
Word[0 .. 65535]
Dword[0 .. 4294967295]
Industry-ID[0 .. 36] (TTDPatch)
[0 .. 63] (OTTD)
Station-ID, Object-ID, Veh-ID[*][0 .. 255]
Industrytile-ID[0 .. 255] (TTDPatch)
[0 .. 511] (OTTD)
Basecost-ID[0 .. 48] (TTDPatch)
[0 .. 65] (OTTD)
House-ID[0 .. 254] (TTDPatch)
[0 .. 511] (OTTD)
Bridge-ID[0 .. 10] (TTDPatch)
[0 .. 12] (OTTD)
Text-ID[0 .. 1023]
Sound-ID[0 .. 65535] [**]

[*] TTD/TTDPatch/OTTD <r12924:

Since OpenTTD r13482, IDs greater than 255 are allowed, up to a theoretical limit of 65535. Any engine defined which is not in the original range listed will have no default properties, including the name.

Since OpenTTD r25835, object-IDs have been increased to 64,000.

[**] Sound-IDs 0 .. 72 are TTD original sounds

Structured data types

TypeValue rangeUsage
Range<Nibble> .. <Nibble> | <Byte> .. <Byte> | <Word> .. <Word>a range of consecutive numbers
Enum<Byte>Enumerated type
String{<Char>}Definition of names and other texts
Label<Char>*4Definition of (class) labels for stations, cargoes and railtypes
Date([1 .. 31] - [1 .. 12] - <Word>) |
(<Word> / [1 .. 12] / [1 .. 31])
Definition of dates
Coordinate<Nibble>, <Nibble>Coordinate: x-value, y-value
Unit-term<Word> [km/h, KM/H, mph, MPH]Definition of speed
<Word> [hp, HP, ps, PS, kw, KW]Definition of power
<Word> [t, T, tnl, TNL, tnsh, TNSH, kg (*), KG (*)]Definition of weight
<Byte> [kn, KN, kp, KP, lbf, LBF]Definition of tractive effort
<Byte> [%]Definition of percent values (refitcost, canalspeed, ..)
Feature[_TRAIN, _ROADVEHICLE, _SHIP, _STATION, _CANAL, _BRIDGE, _HOUSE, _GLOBAL, _CARGO, _SOUND, _OBJECT, _RAILTYPE, _AIRCRAFT, _INDUSTRYTILE, _INDUSTRY]Definition of TTD feature to use
TileType[0, 2, 4, 6]TTD station tile types
EngineType[STEAM, DIESEL, ELECTRIC, MONORAIL, MAGLEV, WAGON]Definition of engine types
CallbackFeature-specific, see thereDefinition of callbacks
CargoClass[TRVL, POST, EXPRESS, VALUE, BULK, PGOODS, LIQUID, REEF, HAZARD, SHELTER, WEIGHT]Definition of cargo classes
CargoType[PASS, COAL, WATR, MAIL, OIL, LVST, GOOD, GRAI, WHEA, MAIZ, WOOD, IORE, CORE, STEL, PLAS, VALU, GOLD, DIAM, SPECIAL, MENU]Definition of original TTD cargo types. For custom cargo types (ECS, FIRS) see here.
Climate[INACTIVE, TEMPERATE, ARCTIC, TROPIC, TOYLAND]Definition of climate
Effect[NONE, NOPOWER, steam(), diesel(), electric()]Engine effect
List<par_1>, <par_2>, ..., <par_n>List definition, may contain structured types
TownZone[TZ_OUTSKIRTS, TZ_PERIPHERY, TZ_RESIDENTIAL, TZ_COMMERCIAL, TZ_CENTRE]Definition of town zones
House-size[SINGLE, DOUBLEX, DOUBLEY, QUAD]Definition of house sizes
Language-ID[ALL, D, E, F, HR, I, NL, H, PL, RUS, S, SRB, UK, US]Definition of languages

(*) = road vehicles only