locale.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:8k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* Copyright (C) 1991,92,95-99,2000,01,02 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.    The GNU C Library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Lesser General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2.1 of the License, or (at your option) any later version.
  7.    The GNU C Library 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.  See the GNU
  10.    Lesser General Public License for more details.
  11.    You should have received a copy of the GNU Lesser General Public
  12.    License along with the GNU C Library; if not, write to the Free
  13.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  14.    02111-1307 USA.  */
  15. /*
  16.  * ISO C99 Standard: 7.11 Localization <locale.h>
  17.  */
  18. #ifndef _LOCALE_H
  19. #define _LOCALE_H 1
  20. #include <features.h>
  21. #define __need_NULL
  22. #include <stddef.h>
  23. #include <bits/locale.h>
  24. __BEGIN_DECLS
  25. /* These are the possibilities for the first argument to setlocale.
  26.    The code assumes that the lowest LC_* symbol has the value zero.  */
  27. #define LC_CTYPE          __LC_CTYPE
  28. #define LC_NUMERIC        __LC_NUMERIC
  29. #define LC_TIME           __LC_TIME
  30. #define LC_COLLATE        __LC_COLLATE
  31. #define LC_MONETARY       __LC_MONETARY
  32. #define LC_MESSAGES       __LC_MESSAGES
  33. #define LC_ALL   __LC_ALL
  34. #define LC_PAPER   __LC_PAPER
  35. #define LC_NAME   __LC_NAME
  36. #define LC_ADDRESS   __LC_ADDRESS
  37. #define LC_TELEPHONE   __LC_TELEPHONE
  38. #define LC_MEASUREMENT   __LC_MEASUREMENT
  39. #define LC_IDENTIFICATION __LC_IDENTIFICATION
  40. /* Structure giving information about numeric and monetary notation.  */
  41. struct lconv
  42. {
  43.   /* Numeric (non-monetary) information.  */
  44.   char *decimal_point; /* Decimal point character.  */
  45.   char *thousands_sep; /* Thousands separator.  */
  46.   /* Each element is the number of digits in each group;
  47.      elements with higher indices are farther left.
  48.      An element with value CHAR_MAX means that no further grouping is done.
  49.      An element with value 0 means that the previous element is used
  50.      for all groups farther left.  */
  51.   char *grouping;
  52.   /* Monetary information.  */
  53.   /* First three chars are a currency symbol from ISO 4217.
  54.      Fourth char is the separator.  Fifth char is ''.  */
  55.   char *int_curr_symbol;
  56.   char *currency_symbol; /* Local currency symbol.  */
  57.   char *mon_decimal_point; /* Decimal point character.  */
  58.   char *mon_thousands_sep; /* Thousands separator.  */
  59.   char *mon_grouping; /* Like `grouping' element (above).  */
  60.   char *positive_sign; /* Sign for positive values.  */
  61.   char *negative_sign; /* Sign for negative values.  */
  62.   char int_frac_digits; /* Int'l fractional digits.  */
  63.   char frac_digits; /* Local fractional digits.  */
  64.   /* 1 if currency_symbol precedes a positive value, 0 if succeeds.  */
  65.   char p_cs_precedes;
  66.   /* 1 iff a space separates currency_symbol from a positive value.  */
  67.   char p_sep_by_space;
  68.   /* 1 if currency_symbol precedes a negative value, 0 if succeeds.  */
  69.   char n_cs_precedes;
  70.   /* 1 iff a space separates currency_symbol from a negative value.  */
  71.   char n_sep_by_space;
  72.   /* Positive and negative sign positions:
  73.      0 Parentheses surround the quantity and currency_symbol.
  74.      1 The sign string precedes the quantity and currency_symbol.
  75.      2 The sign string follows the quantity and currency_symbol.
  76.      3 The sign string immediately precedes the currency_symbol.
  77.      4 The sign string immediately follows the currency_symbol.  */
  78.   char p_sign_posn;
  79.   char n_sign_posn;
  80. #ifdef __USE_ISOC99
  81.   /* 1 if int_curr_symbol precedes a positive value, 0 if succeeds.  */
  82.   char int_p_cs_precedes;
  83.   /* 1 iff a space separates int_curr_symbol from a positive value.  */
  84.   char int_p_sep_by_space;
  85.   /* 1 if int_curr_symbol precedes a negative value, 0 if succeeds.  */
  86.   char int_n_cs_precedes;
  87.   /* 1 iff a space separates int_curr_symbol from a negative value.  */
  88.   char int_n_sep_by_space;
  89.   /* Positive and negative sign positions:
  90.      0 Parentheses surround the quantity and int_curr_symbol.
  91.      1 The sign string precedes the quantity and int_curr_symbol.
  92.      2 The sign string follows the quantity and int_curr_symbol.
  93.      3 The sign string immediately precedes the int_curr_symbol.
  94.      4 The sign string immediately follows the int_curr_symbol.  */
  95.   char int_p_sign_posn;
  96.   char int_n_sign_posn;
  97. #else
  98.   char __int_p_cs_precedes;
  99.   char __int_p_sep_by_space;
  100.   char __int_n_cs_precedes;
  101.   char __int_n_sep_by_space;
  102.   char __int_p_sign_posn;
  103.   char __int_n_sign_posn;
  104. #endif
  105. };
  106. __BEGIN_NAMESPACE_STD
  107. /* Set and/or return the current locale.  */
  108. extern char *setlocale (int __category, __const char *__locale) __THROW;
  109. /* Return the numeric/monetary information for the current locale.  */
  110. extern struct lconv *localeconv (void) __THROW;
  111. __END_NAMESPACE_STD
  112. #ifdef __USE_GNU
  113. /* The concept of one static locale per category is not very well
  114.    thought out.  Many applications will need to process its data using
  115.    information from several different locales.  Another application is
  116.    the implementation of the internationalization handling in the
  117.    upcoming ISO C++ standard library.  To support this another set of
  118.    the functions using locale data exist which have an additional
  119.    argument.
  120.    Attention: all these functions are *not* standardized in any form.
  121.    This is a proof-of-concept implementation.  */
  122. /* Get locale datatype definition.  */
  123. # include <xlocale.h>
  124. typedef __locale_t locale_t;
  125. /* Return a reference to a data structure representing a set of locale
  126.    datasets.  Unlike for the CATEGORY parameter for `setlocale' the
  127.    CATEGORY_MASK parameter here uses a single bit for each category,
  128.    made by OR'ing together LC_*_MASK bits above.  */
  129. extern __locale_t newlocale (int __category_mask, __const char *__locale,
  130.      __locale_t __base) __THROW;
  131. /* These are the bits that can be set in the CATEGORY_MASK argument to
  132.    `newlocale'.  In the GNU implementation, LC_FOO_MASK has the value
  133.    of (1 << LC_FOO), but this is not a part of the interface that
  134.    callers can assume will be true.  */
  135. # define LC_CTYPE_MASK (1 << __LC_CTYPE)
  136. # define LC_NUMERIC_MASK (1 << __LC_NUMERIC)
  137. # define LC_TIME_MASK (1 << __LC_TIME)
  138. # define LC_COLLATE_MASK (1 << __LC_COLLATE)
  139. # define LC_MONETARY_MASK (1 << __LC_MONETARY)
  140. # define LC_MESSAGES_MASK (1 << __LC_MESSAGES)
  141. # define LC_PAPER_MASK (1 << __LC_PAPER)
  142. # define LC_NAME_MASK (1 << __LC_NAME)
  143. # define LC_ADDRESS_MASK (1 << __LC_ADDRESS)
  144. # define LC_TELEPHONE_MASK (1 << __LC_TELEPHONE)
  145. # define LC_MEASUREMENT_MASK (1 << __LC_MEASUREMENT)
  146. # define LC_IDENTIFICATION_MASK (1 << __LC_IDENTIFICATION)
  147. # define LC_ALL_MASK (LC_CTYPE_MASK 
  148.  | LC_NUMERIC_MASK 
  149.  | LC_TIME_MASK 
  150.  | LC_COLLATE_MASK 
  151.  | LC_MONETARY_MASK 
  152.  | LC_MESSAGES_MASK 
  153.  | LC_PAPER_MASK 
  154.  | LC_NAME_MASK 
  155.  | LC_ADDRESS_MASK 
  156.  | LC_TELEPHONE_MASK 
  157.  | LC_MEASUREMENT_MASK 
  158.  | LC_IDENTIFICATION_MASK 
  159.  )
  160. /* Return a duplicate of the set of locale in DATASET.  All usage
  161.    counters are increased if necessary.  */
  162. extern __locale_t duplocale (__locale_t __dataset) __THROW;
  163. /* Free the data associated with a locale dataset previously returned
  164.    by a call to `setlocale_r'.  */
  165. extern void freelocale (__locale_t __dataset) __THROW;
  166. /* Switch the current thread's locale to DATASET.
  167.    If DATASET is null, instead just return the current setting.
  168.    The special value LC_GLOBAL_LOCALE is the initial setting
  169.    for all threads and can also be installed any time, meaning
  170.    the thread uses the global settings controlled by `setlocale'.  */
  171. extern __locale_t uselocale (__locale_t __dataset) __THROW;
  172. /* This value can be passed to `uselocale' and may be returned by it.
  173.    Passing this value to any other function has undefined behavior.  */
  174. # define LC_GLOBAL_LOCALE ((__locale_t) -1L)
  175. #endif
  176. __END_DECLS
  177. #endif /* locale.h  */