localeconv.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:6k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* localeconv.c - ANSI locale */
  2. /* Copyright 1992-1995 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01f,11feb95,jdi  doc tweaks.
  7. 01e,14mar93,jdi  fixed typo.
  8. 01d,07feb93,jdi  documentation cleanup for 5.1.
  9. 01c,20sep92,smb  documentation additions
  10. 01b,12jul92,smb  changed definition of localeconv for MIPS cpp.
  11. 01a,08jul92,smb  written.
  12. */
  13. /*
  14. DESCRIPTION
  15.  
  16. INCLUDE FILE: locale.h limits.h
  17.  
  18. SEE ALSO: American National Standard X3.159-1989
  19. NOMANUAL
  20. */
  21. #include "vxWorks.h"
  22. #include "locale.h"
  23. #include "limits.h"
  24. /* locals */
  25. static char null[] = "";
  26. struct lconv __locale = 
  27.     {
  28.     /* LC_NUMERIC */
  29.     ".",  /* decimal_point */
  30.     null,  /* thousands_sep */
  31.     null,  /* grouping */
  32.     /* LC_MONETARY */
  33.     null,  /* int_curr_symbol */
  34.     null,  /* currency_symbol */
  35.     null,  /* mon_decimal_point */
  36.     null,  /* mon_thousands_sep */
  37.     null,  /* mon_grouping */
  38.     null,  /* positive_sign */
  39.     null, /* negative_sign */
  40.     CHAR_MAX,  /* int_frac_digits */
  41.     CHAR_MAX,  /* frac_digits */
  42.     CHAR_MAX,  /* p_cs_precedes */
  43.     CHAR_MAX, /* p_sep_by_space */
  44.     CHAR_MAX,  /* n_cs_precedes */
  45.     CHAR_MAX,  /* n_sep_by_space */
  46.     CHAR_MAX,  /* p_sign_posn */
  47.     CHAR_MAX  /* n_sign_posn */
  48.     };
  49. #undef localeconv
  50. /*******************************************************************************
  51. *
  52. * localeconv - set the components of an object with type `lconv' (ANSI)
  53. *
  54. * This routine sets the components of an object with type `struct lconv'
  55. * with values appropriate for the formatting of numeric quantities
  56. * (monetary and otherwise) according to the rules of the current locale.
  57. *
  58. * The members of the structure with type `char *' are pointers to strings
  59. * any of which (except `decimal_point') can point to "" to indicate that
  60. * the value is not available in the current locale or is of zero length.
  61. * The members with type `char' are nonnegative numbers, any of which can be
  62. * CHAR_MAX to indicate that the value is not available in the current locale.
  63. * The members include the following:
  64. * .iP "char *decimal_point" "" 3
  65. * The decimal-point character used to format nonmonetary quantities.
  66. * .iP "char *thousands_sep"
  67. * The character used to separate groups of digits before the
  68. * decimal-point character in formatted nonmonetary quantities.
  69. * .iP "char *grouping"
  70. * A string whose elements indicate the size of each group of
  71. * digits in formatted nonmonetary quantities.
  72. * .iP "char *int_curr_symbol"
  73. * The international currency symbol applicable to the current
  74. * locale. The first three characters contain the alphabetic international
  75. * currency symbol in accordance with those specified in ISO 4217:1987.
  76. * The fourth character (immediately preceding the null character) is the
  77. * character used to separate the international currency symbol from
  78. * the monetary quantity.
  79. * .iP "char *currency_symbol"
  80. * The local currency symbol applicable to the current locale.
  81. * .iP "char *mon_decimal_point"
  82. * The decimal-point used to format monetary quantities.
  83. * .iP "char *mon_thousands_sep"
  84. * The separator for groups of digits before the decimal-point in
  85. * formatted monetary quantities.
  86. * .iP "char *mon_grouping"
  87. * A string whose elements indicate the size of each group of digits in
  88. * formatted monetary quantities.
  89. * .iP "char *positive_sign"
  90. * The string used to indicate a nonnegative-valued formatted monetary
  91. * quantity.
  92. * .iP "char *negative_sign"
  93. * The string used to indicate a negative-valued formatted monetary
  94. * quantity.
  95. * .iP "char int_frac_digits"
  96. * The number of fractional digits (those after the decimal-point)
  97. * to be displayed in an internationally formatted monetary quantity.
  98. * .iP "char frac_digits"
  99. * The number of fractional digits (those after the decimal-point)
  100. * to be displayed in a formatted monetary quantity.
  101. * .iP "char p_cs_precedes"
  102. * Set to 1 or 0 if the `currency_symbol' respectively precedes or
  103. * succeeds the value for a nonnegative formatted monetary quantity.
  104. * .iP "char p_sep_by_space"
  105. * Set to 1 or 0 if the `currency_symbol' respectively is or is not
  106. * separated by a space from the value for a nonnegative formatted
  107. * monetary quantity.
  108. * .iP "char n_cs_precedes"
  109. * Set to 1 or 0 if the `currency_symbol' respectively precedes or
  110. * succeeds the value for a negative formatted monetary quantity.
  111. * .iP "char n_sep_by_space"
  112. * Set to 1 or 0 if the `currency_symbol' respectively is or is not
  113. * separated by a space from the value for a negative formatted monetary
  114. * quantity.
  115. * .iP "char p_sign_posn"
  116. * Set to a value indicating the positioning of the `positive_sign'
  117. * for a nonnegative formatted monetary quantity.
  118. * .iP "char n_sign_posn"
  119. * Set to a value indicating the positioning of the `negative_sign'
  120. * for a negative formatted monetary quantity.
  121. *
  122. * .LP
  123. * The elements of `grouping' and `mon_grouping' are interpreted according
  124. * to the following:
  125. * .iP "CHAR_MAX" "" 1
  126. * No further grouping is to be performed.
  127. * .iP "0"
  128. * The previous element is to be repeatedly used for the remainder of the digits.
  129. * .iP "other"
  130. * The integer value is the number of the digits that comprise the current
  131. * group.  The next element is examined to determined the size of the next
  132. * group of digits before the current group.
  133. *
  134. * .LP
  135. * The values of `p_sign_posn' and `n_sign_posn' are interpreted according to
  136. * the following:
  137. * .iP "0"
  138. * Parentheses surround the quantity and `currency_symbol'.
  139. * .iP "1"
  140. * The sign string precedes the quantity and `currency_symbol'.
  141. * .iP "2"
  142. * The sign string succeeds the quantity and `currency_symbol'.
  143. * .iP "3"
  144. * The sign string immediately precedes the `currency_symbol'.
  145. * .iP "4"
  146. * The sign string immediately succeeds the `currency_symbol'.
  147. *
  148. * .LP
  149. * The implementation behaves as if no library function calls localeconv().
  150. *
  151. * The localeconv() routine returns a pointer to the filled-in object.  The
  152. * structure pointed to by the return value is not modified by the
  153. * program, but may be overwritten by a subsequent call to localeconv().
  154. * In addition, calls to setlocale() with categories LC_ALL, LC_MONETARY,
  155. * or LC_NUMERIC may overwrite the contents of the structure.
  156. *
  157. * INCLUDE FILES: locale.h, limits.h
  158. *
  159. * RETURNS: A pointer to the structure `lconv'.
  160. */
  161. struct lconv *localeconv (void)
  162.     {
  163.     return (&__locale);
  164.     }