clocale.inc 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 2008 by the Free Pascal development team.
  4. Init rtl formating variables based on BSD like libc locales
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. **********************************************************************}
  11. { Initial FreeBSD Implementation by Marco van de Voort.
  12. Crosschecked with OS X 10.4/ppc headers.
  13. To some symbols leading underscores were added. If these values are
  14. ever exposed in an interface this has to be reevaluated.
  15. OpenBSD's langinfo came from NetBSD which is different to FreeBSD. CODESET is
  16. at the end, shifting the older constants one up, the ERA block
  17. is missing and the order after RADIXCHAR is different, first -EXPR then -STR on
  18. FreeBSD and -EXPR paired with corresponding -STR on Open/NetBSD
  19. }
  20. {$IFDEF FPC}
  21. {$PACKRECORDS C}
  22. {$ENDIF}
  23. __LC_ALL = 0;
  24. __LC_COLLATE = 1;
  25. __LC_CTYPE = 2;
  26. __LC_MONETARY = 3;
  27. __LC_NUMERIC = 4;
  28. __LC_TIME = 5;
  29. __LC_MESSAGES = 6;
  30. _LC_LAST = 7; { marks end }
  31. Type
  32. lconv = record
  33. decimal_point : PAnsiChar;
  34. thousands_sep : PAnsiChar;
  35. grouping : PAnsiChar;
  36. int_curr_symbol : PAnsiChar;
  37. currency_symbol : PAnsiChar;
  38. mon_decimal_point : PAnsiChar;
  39. mon_thousands_sep : PAnsiChar;
  40. mon_grouping : PAnsiChar;
  41. positive_sign : PAnsiChar;
  42. negative_sign : PAnsiChar;
  43. int_frac_digits : AnsiChar;
  44. frac_digits : AnsiChar;
  45. p_cs_precedes : AnsiChar;
  46. p_sep_by_space : AnsiChar;
  47. n_cs_precedes : AnsiChar;
  48. n_sep_by_space : AnsiChar;
  49. p_sign_posn : AnsiChar;
  50. n_sign_posn : AnsiChar;
  51. int_p_cs_precedes : AnsiChar;
  52. int_n_cs_precedes : AnsiChar;
  53. int_p_sep_by_space: AnsiChar;
  54. int_n_sep_by_space: AnsiChar;
  55. int_p_sign_posn : AnsiChar;
  56. int_n_sign_posn : AnsiChar;
  57. end;
  58. Tlconv = lconv;
  59. plconv = ^lconv;
  60. Const
  61. {$if defined(openbsd) or defined(netbsd)}
  62. D_T_FIRST = 0;
  63. {$else}
  64. // FreeBSD and Mac OS X?
  65. D_T_FIRST = 1;
  66. CODESET = 0; { codeset name }
  67. {$endif}
  68. D_T_FMT = D_T_FIRST; { string for formatting date and time }
  69. D_FMT = D_T_FIRST+1; { date format string }
  70. T_FMT = D_T_FIRST+2; { time format string }
  71. T_FMT_AMPM = D_T_FIRST+3; { a.m. or p.m. time formatting string }
  72. AM_STR = D_T_FIRST+4; { Ante Meridian affix }
  73. PM_STR = D_T_FIRST+5; { Post Meridian affix }
  74. { week day names }
  75. DAY_1 = PM_STR+1;
  76. DAY_2 = DAY_1+1;
  77. DAY_3 = DAY_1+2;
  78. DAY_4 = DAY_1+3;
  79. DAY_5 = DAY_1+4;
  80. DAY_6 = DAY_1+5;
  81. DAY_7 = DAY_1+6;
  82. { abbreviated week day names }
  83. ABDAY_1 = DAY_7+1;
  84. ABDAY_2 = ABDAY_1+1;
  85. ABDAY_3 = ABDAY_1+2;
  86. ABDAY_4 = ABDAY_1+3;
  87. ABDAY_5 = ABDAY_1+4;
  88. ABDAY_6 = ABDAY_1+5;
  89. ABDAY_7 = ABDAY_1+6;
  90. { month names }
  91. MON_1 = ABDAY_7+1;
  92. MON_2 = MON_1+1;
  93. MON_3 = MON_1+2;
  94. MON_4 = MON_1+3;
  95. MON_5 = MON_1+4;
  96. MON_6 = MON_1+5;
  97. MON_7 = MON_1+6;
  98. MON_8 = MON_1+7;
  99. MON_9 = MON_1+8;
  100. MON_10 = MON_1+9;
  101. MON_11 = MON_1+10;
  102. MON_12 = MON_1+11;
  103. { abbreviated month names }
  104. ABMON_1 = MON_12+1;
  105. ABMON_2 = ABMON_1+1;
  106. ABMON_3 = ABMON_1+2;
  107. ABMON_4 = ABMON_1+3;
  108. ABMON_5 = ABMON_1+4;
  109. ABMON_6 = ABMON_1+5;
  110. ABMON_7 = ABMON_1+6;
  111. ABMON_8 = ABMON_1+7;
  112. ABMON_9 = ABMON_1+8;
  113. ABMON_10 = ABMON_1+9;
  114. ABMON_11 = ABMON_1+10;
  115. ABMON_12 = ABMON_1+11;
  116. {$if defined(openbsd) or defined(netbsd)}
  117. RADIXCHAR = ABMON_1+12; { Radix AnsiChar}
  118. THOUSEP = RADIXCHAR+1; { separator for thousands }
  119. YESSTR = RADIXCHAR+2; { affirmative response for yes/no queries }
  120. YESEXPR = RADIXCHAR+3; { affirmative response expression }
  121. NOSTR = RADIXCHAR+4; { negative response for yes/no queries }
  122. NOEXPR = RADIXCHAR+5; { negative response expression }
  123. CRNCYSTR = RADIXCHAR+6; { currency symbol }
  124. {$else}
  125. ERA = ABMON_12+1; { era description segments }
  126. ERA_D_FMT = ERA+1; { era date format string }
  127. ERA_D_T_FMT = ERA+2; { era date and time format string }
  128. ERA_T_FMT = ERA+3; { era time format string }
  129. ALT_DIGITS = ERA+4; { alternative symbols for digits }
  130. RADIXCHAR = ERA+5; { radix AnsiChar }
  131. THOUSEP = RADIXCHAR+1; { separator for thousands }
  132. YESEXPR = RADIXCHAR+2; { affirmative response expression }
  133. NOEXPR = RADIXCHAR+3; { negative response expression }
  134. YESSTR = RADIXCHAR+4; { affirmative response for yes/no queries }
  135. NOSTR = RADIXCHAR+5; { negative response for yes/no queries }
  136. CRNCYSTR = RADIXCHAR+6; { currency symbol }
  137. {$endif}
  138. {$if defined(openbsd) or defined(netbsd)}
  139. CODESET = 51;
  140. {$else}
  141. D_MD_ORDER = 57; { month/day order (local extension) }
  142. {$endif}
  143. function localeconv:plconv; cdecl; external clib name 'localeconv';