12 #include "../core/enum_type.hpp" 
   23 typedef 
void (*ParseCmdProc)(Buffer *buffer, 
char *buf, 
int value);
 
   30   int8 default_plural_offset;
 
   34 extern void EmitSingleChar(
Buffer *buffer, 
char *buf, 
int value);
 
   35 extern void EmitPlural(
Buffer *buffer, 
char *buf, 
int value);
 
   36 extern void EmitGender(
Buffer *buffer, 
char *buf, 
int value);
 
   44   {
"BLUE",              EmitSingleChar, SCC_BLUE,               0, -1, 
C_DONTCOUNT},
 
   45   {
"SILVER",            EmitSingleChar, SCC_SILVER,             0, -1, 
C_DONTCOUNT},
 
   46   {
"GOLD",              EmitSingleChar, SCC_GOLD,               0, -1, 
C_DONTCOUNT},
 
   47   {
"RED",               EmitSingleChar, SCC_RED,                0, -1, 
C_DONTCOUNT},
 
   48   {
"PURPLE",            EmitSingleChar, SCC_PURPLE,             0, -1, 
C_DONTCOUNT},
 
   49   {
"LTBROWN",           EmitSingleChar, SCC_LTBROWN,            0, -1, 
C_DONTCOUNT},
 
   50   {
"ORANGE",            EmitSingleChar, SCC_ORANGE,             0, -1, 
C_DONTCOUNT},
 
   51   {
"GREEN",             EmitSingleChar, SCC_GREEN,              0, -1, 
C_DONTCOUNT},
 
   52   {
"YELLOW",            EmitSingleChar, SCC_YELLOW,             0, -1, 
C_DONTCOUNT},
 
   53   {
"DKGREEN",           EmitSingleChar, SCC_DKGREEN,            0, -1, 
C_DONTCOUNT},
 
   54   {
"CREAM",             EmitSingleChar, SCC_CREAM,              0, -1, 
C_DONTCOUNT},
 
   55   {
"BROWN",             EmitSingleChar, SCC_BROWN,              0, -1, 
C_DONTCOUNT},
 
   56   {
"WHITE",             EmitSingleChar, SCC_WHITE,              0, -1, 
C_DONTCOUNT},
 
   57   {
"LTBLUE",            EmitSingleChar, SCC_LTBLUE,             0, -1, 
C_DONTCOUNT},
 
   58   {
"GRAY",              EmitSingleChar, SCC_GRAY,               0, -1, 
C_DONTCOUNT},
 
   59   {
"DKBLUE",            EmitSingleChar, SCC_DKBLUE,             0, -1, 
C_DONTCOUNT},
 
   60   {
"BLACK",             EmitSingleChar, SCC_BLACK,              0, -1, 
C_DONTCOUNT},
 
   62   {
"REV",               EmitSingleChar, SCC_REVISION,           0, -1, 
C_NONE}, 
 
   64   {
"STRING1",           EmitSingleChar, SCC_STRING1,            2, -1, 
C_CASE | 
C_GENDER}, 
 
   65   {
"STRING2",           EmitSingleChar, SCC_STRING2,            3, -1, 
C_CASE | 
C_GENDER}, 
 
   66   {
"STRING3",           EmitSingleChar, SCC_STRING3,            4, -1, 
C_CASE | 
C_GENDER}, 
 
   67   {
"STRING4",           EmitSingleChar, SCC_STRING4,            5, -1, 
C_CASE | 
C_GENDER}, 
 
   68   {
"STRING5",           EmitSingleChar, SCC_STRING5,            6, -1, 
C_CASE | 
C_GENDER}, 
 
   69   {
"STRING6",           EmitSingleChar, SCC_STRING6,            7, -1, 
C_CASE | 
C_GENDER}, 
 
   70   {
"STRING7",           EmitSingleChar, SCC_STRING7,            8, -1, 
C_CASE | 
C_GENDER}, 
 
   72   {
"STATION_FEATURES",  EmitSingleChar, SCC_STATION_FEATURES,   1, -1, 
C_NONE}, 
 
   73   {
"INDUSTRY",          EmitSingleChar, SCC_INDUSTRY_NAME,      1, -1, 
C_CASE | 
C_GENDER}, 
 
   74   {
"CARGO_LONG",        EmitSingleChar, SCC_CARGO_LONG,         2,  1, 
C_NONE | 
C_GENDER},
 
   75   {
"CARGO_SHORT",       EmitSingleChar, SCC_CARGO_SHORT,        2,  1, 
C_NONE}, 
 
   76   {
"CARGO_TINY",        EmitSingleChar, SCC_CARGO_TINY,         2,  1, 
C_NONE}, 
 
   77   {
"CARGO_LIST",        EmitSingleChar, SCC_CARGO_LIST,         1, -1, 
C_CASE},
 
   78   {
"POWER",             EmitSingleChar, SCC_POWER,              1,  0, 
C_NONE},
 
   79   {
"VOLUME_LONG",       EmitSingleChar, SCC_VOLUME_LONG,        1,  0, 
C_NONE},
 
   80   {
"VOLUME_SHORT",      EmitSingleChar, SCC_VOLUME_SHORT,       1,  0, 
C_NONE},
 
   81   {
"WEIGHT_LONG",       EmitSingleChar, SCC_WEIGHT_LONG,        1,  0, 
C_NONE},
 
   82   {
"WEIGHT_SHORT",      EmitSingleChar, SCC_WEIGHT_SHORT,       1,  0, 
C_NONE},
 
   83   {
"FORCE",             EmitSingleChar, SCC_FORCE,              1,  0, 
C_NONE},
 
   84   {
"VELOCITY",          EmitSingleChar, SCC_VELOCITY,           1,  0, 
C_NONE},
 
   85   {
"HEIGHT",            EmitSingleChar, SCC_HEIGHT,             1,  0, 
C_NONE},
 
   90   {
"DATE_TINY",         EmitSingleChar, SCC_DATE_TINY,          1, -1, 
C_NONE},
 
   91   {
"DATE_SHORT",        EmitSingleChar, SCC_DATE_SHORT,         1, -1, 
C_CASE},
 
   92   {
"DATE_LONG",         EmitSingleChar, SCC_DATE_LONG,          1, -1, 
C_CASE},
 
   93   {
"DATE_ISO",          EmitSingleChar, SCC_DATE_ISO,           1, -1, 
C_NONE},
 
   96   {
"RAW_STRING",        EmitSingleChar, SCC_RAW_STRING_POINTER, 1, -1, 
C_NONE | 
C_GENDER},
 
   99   {
"COMMA",             EmitSingleChar, SCC_COMMA,              1,  0, 
C_NONE}, 
 
  100   {
"DECIMAL",           EmitSingleChar, SCC_DECIMAL,            2,  0, 
C_NONE}, 
 
  101   {
"NUM",               EmitSingleChar, SCC_NUM,                1,  0, 
C_NONE}, 
 
  102   {
"ZEROFILL_NUM",      EmitSingleChar, SCC_ZEROFILL_NUM,       2,  0, 
C_NONE}, 
 
  103   {
"BYTES",             EmitSingleChar, SCC_BYTES,              1,  0, 
C_NONE}, 
 
  104   {
"HEX",               EmitSingleChar, SCC_HEX,                1,  0, 
C_NONE}, 
 
  106   {
"CURRENCY_LONG",     EmitSingleChar, SCC_CURRENCY_LONG,      1,  0, 
C_NONE},
 
  107   {
"CURRENCY_SHORT",    EmitSingleChar, SCC_CURRENCY_SHORT,     1,  0, 
C_NONE}, 
 
  109   {
"WAYPOINT",          EmitSingleChar, SCC_WAYPOINT_NAME,      1, -1, 
C_NONE | 
C_GENDER}, 
 
  110   {
"STATION",           EmitSingleChar, SCC_STATION_NAME,       1, -1, 
C_NONE | 
C_GENDER},
 
  111   {
"DEPOT",             EmitSingleChar, SCC_DEPOT_NAME,         2, -1, 
C_NONE | 
C_GENDER},
 
  112   {
"TOWN",              EmitSingleChar, SCC_TOWN_NAME,          1, -1, 
C_NONE | 
C_GENDER},
 
  113   {
"GROUP",             EmitSingleChar, SCC_GROUP_NAME,         1, -1, 
C_NONE | 
C_GENDER},
 
  114   {
"SIGN",              EmitSingleChar, SCC_SIGN_NAME,          1, -1, 
C_NONE | 
C_GENDER},
 
  115   {
"ENGINE",            EmitSingleChar, SCC_ENGINE_NAME,        1, -1, 
C_NONE | 
C_GENDER},
 
  116   {
"VEHICLE",           EmitSingleChar, SCC_VEHICLE_NAME,       1, -1, 
C_NONE | 
C_GENDER},
 
  117   {
"COMPANY",           EmitSingleChar, SCC_COMPANY_NAME,       1, -1, 
C_NONE | 
C_GENDER},
 
  118   {
"COMPANY_NUM",       EmitSingleChar, SCC_COMPANY_NUM,        1, -1, 
C_NONE},
 
  119   {
"PRESIDENT_NAME",    EmitSingleChar, SCC_PRESIDENT_NAME,     1, -1, 
C_NONE | 
C_GENDER},
 
  123   {
"UP_ARROW",          EmitSingleChar, SCC_UP_ARROW,           0, -1, 
C_DONTCOUNT},
 
  124   {
"SMALL_UP_ARROW",    EmitSingleChar, SCC_SMALL_UP_ARROW,     0, -1, 
C_DONTCOUNT},
 
  125   {
"SMALL_DOWN_ARROW",  EmitSingleChar, SCC_SMALL_DOWN_ARROW,   0, -1, 
C_DONTCOUNT},
 
  126   {
"TRAIN",             EmitSingleChar, SCC_TRAIN,              0, -1, 
C_DONTCOUNT},
 
  127   {
"LORRY",             EmitSingleChar, SCC_LORRY,              0, -1, 
C_DONTCOUNT},
 
  128   {
"BUS",               EmitSingleChar, SCC_BUS,                0, -1, 
C_DONTCOUNT},
 
  129   {
"PLANE",             EmitSingleChar, SCC_PLANE,              0, -1, 
C_DONTCOUNT},
 
  130   {
"SHIP",              EmitSingleChar, SCC_SHIP,               0, -1, 
C_DONTCOUNT},
 
  131   {
"NBSP",              EmitSingleChar, 0xA0,                   0, -1, 
C_DONTCOUNT},
 
  132   {
"COPYRIGHT",         EmitSingleChar, 0xA9,                   0, -1, 
C_DONTCOUNT},
 
  133   {
"DOWN_ARROW",        EmitSingleChar, SCC_DOWN_ARROW,         0, -1, 
C_DONTCOUNT},
 
  134   {
"CHECKMARK",         EmitSingleChar, SCC_CHECKMARK,          0, -1, 
C_DONTCOUNT},
 
  135   {
"CROSS",             EmitSingleChar, SCC_CROSS,              0, -1, 
C_DONTCOUNT},
 
  136   {
"RIGHT_ARROW",       EmitSingleChar, SCC_RIGHT_ARROW,        0, -1, 
C_DONTCOUNT},
 
  137   {
"SMALL_LEFT_ARROW",  EmitSingleChar, SCC_LESS_THAN,          0, -1, 
C_DONTCOUNT},
 
  138   {
"SMALL_RIGHT_ARROW", EmitSingleChar, SCC_GREATER_THAN,       0, -1, 
C_DONTCOUNT},
 
  163   { 2, 
"Two forms: special case for 1.", 
"\"1\" \"other\"" },
 
  164   { 1, 
"Only one form.", 
"\"other\"" },
 
  165   { 2, 
"Two forms: special case for 0 to 1.", 
"\"0..1\" \"other\"" },
 
  166   { 3, 
"Three forms: special cases for 0, and numbers ending in 1 except when ending in 11.", 
"\"1,21,31,...\" \"other\" \"0\"" },
 
  167   { 5, 
"Five forms: special cases for 1, 2, 3 to 6, and 7 to 10.", 
"\"1\" \"2\" \"3..6\" \"7..10\" \"other\"" },
 
  168   { 3, 
"Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 9 except when ending in 12 to 19.", 
"\"1,21,31,...\" \"2..9,22..29,32..39,...\" \"other\"" },
 
  169   { 3, 
"Three forms: special cases for numbers ending in 1 except when ending in 11, and 2 to 4 except when ending in 12 to 14.", 
"\"1,21,31,...\" \"2..4,22..24,32..34,...\" \"other\"" },
 
  170   { 3, 
"Three forms: special cases for 1, and numbers ending in 2 to 4 except when ending in 12 to 14.", 
"\"1\" \"2..4,22..24,32..34,...\" \"other\"" },
 
  171   { 4, 
"Four forms: special cases for numbers ending in 01, 02, and 03 to 04.", 
"\"1,101,201,...\" \"2,102,202,...\" \"3..4,103..104,203..204,...\" \"other\"" },
 
  172   { 2, 
"Two forms: special case for numbers ending in 1 except when ending in 11.", 
"\"1,21,31,...\" \"other\"" },
 
  173   { 3, 
"Three forms: special cases for 1, and 2 to 4.", 
"\"1\" \"2..4\" \"other\"" },
 
  174   { 2, 
"Two forms: cases for numbers ending with a consonant, and with a vowel.", 
"\"yeong,il,sam,yuk,chil,pal\" \"i,sa,o,gu\"" },
 
  175   { 4, 
"Four forms: special cases for 1, 0 and numbers ending in 02 to 10, and numbers ending in 11 to 19.", 
"\"1\" \"0,2..10,102..110,202..210,...\" \"11..19,111..119,211..219,...\" \"other\"" },
 
  176   { 4, 
"Four forms: special cases for 1 and 11, 2 and 12, 3..10 and 13..19.", 
"\"1,11\" \"2,12\" \"3..10,13..19\" \"other\"" },
 
  194   { 
"name",        
"0",   
"",       
"English name for the language" },
 
  195   { 
"ownname",     
"t",   
"",       
"Localised name for the language" },
 
  196   { 
"isocode",     
"0",   
"",       
"ISO code for the language" },
 
  197   { 
"plural",      
"tp",  
"0",      
"Plural form to use" },
 
  198   { 
"textdir",     
"tl",  
"ltr",    
"Text direction. Either ltr (left-to-right) or rtl (right-to-left)" },
 
  199   { 
"digitsep",    
"td",  
",",      
"Digit grouping separator for non-currency numbers" },
 
  200   { 
"digitsepcur", 
"td",  
",",      
"Digit grouping separator for currency numbers" },
 
  201   { 
"decimalsep",  
"td",  
".",      
"Decimal separator" },
 
  202   { 
"winlangid",   
"x2",  
"0x0000", 
"Language ID for Windows" },
 
  203   { 
"grflangid",   
"x1",  
"0x00",   
"Language ID for NewGRFs" },
 
  204   { 
"gender",      
"tag", 
"",       
"List of genders" },
 
  205   { 
"case",        
"tac", 
"",       
"List of cases" },