home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / include / wctype.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-08-31  |  10.9 KB  |  320 lines

  1. /* Copyright (C) 1996-2002, 2005, 2007 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. /*
  20.  *    ISO C99 Standard: 7.25
  21.  *    Wide character classification and mapping utilities  <wctype.h>
  22.  */
  23.  
  24. #ifndef _WCTYPE_H
  25.  
  26. #include <features.h>
  27. #include <bits/types.h>
  28.  
  29. #ifndef __need_iswxxx
  30. # define _WCTYPE_H    1
  31.  
  32. /* Get wint_t from <wchar.h>.  */
  33. # define __need_wint_t
  34. # include <wchar.h>
  35.  
  36. /* Constant expression of type `wint_t' whose value does not correspond
  37.    to any member of the extended character set.  */
  38. # ifndef WEOF
  39. #  define WEOF (0xffffffffu)
  40. # endif
  41. #endif
  42. #undef __need_iswxxx
  43.  
  44.  
  45. /* The following part is also used in the <wcsmbs.h> header when compiled
  46.    in the Unix98 compatibility mode.  */
  47. #ifndef __iswxxx_defined
  48. # define __iswxxx_defined    1
  49.  
  50. __BEGIN_NAMESPACE_C99
  51. /* Scalar type that can hold values which represent locale-specific
  52.    character classifications.  */
  53. typedef unsigned long int wctype_t;
  54. __END_NAMESPACE_C99
  55.  
  56. # ifndef _ISwbit
  57. /* The characteristics are stored always in network byte order (big
  58.    endian).  We define the bit value interpretations here dependent on the
  59.    machine's byte order.  */
  60.  
  61. #  include <endian.h>
  62. #  if __BYTE_ORDER == __BIG_ENDIAN
  63. #   define _ISwbit(bit)    (1 << (bit))
  64. #  else /* __BYTE_ORDER == __LITTLE_ENDIAN */
  65. #   define _ISwbit(bit)    \
  66.     ((bit) < 8 ? (int) ((1UL << (bit)) << 24)                  \
  67.      : ((bit) < 16 ? (int) ((1UL << (bit)) << 8)                  \
  68.         : ((bit) < 24 ? (int) ((1UL << (bit)) >> 8)                  \
  69.            : (int) ((1UL << (bit)) >> 24))))
  70. #  endif
  71.  
  72. enum
  73. {
  74.   __ISwupper = 0,            /* UPPERCASE.  */
  75.   __ISwlower = 1,            /* lowercase.  */
  76.   __ISwalpha = 2,            /* Alphabetic.  */
  77.   __ISwdigit = 3,            /* Numeric.  */
  78.   __ISwxdigit = 4,            /* Hexadecimal numeric.  */
  79.   __ISwspace = 5,            /* Whitespace.  */
  80.   __ISwprint = 6,            /* Printing.  */
  81.   __ISwgraph = 7,            /* Graphical.  */
  82.   __ISwblank = 8,            /* Blank (usually SPC and TAB).  */
  83.   __ISwcntrl = 9,            /* Control character.  */
  84.   __ISwpunct = 10,            /* Punctuation.  */
  85.   __ISwalnum = 11,            /* Alphanumeric.  */
  86.  
  87.   _ISwupper = _ISwbit (__ISwupper),    /* UPPERCASE.  */
  88.   _ISwlower = _ISwbit (__ISwlower),    /* lowercase.  */
  89.   _ISwalpha = _ISwbit (__ISwalpha),    /* Alphabetic.  */
  90.   _ISwdigit = _ISwbit (__ISwdigit),    /* Numeric.  */
  91.   _ISwxdigit = _ISwbit (__ISwxdigit),    /* Hexadecimal numeric.  */
  92.   _ISwspace = _ISwbit (__ISwspace),    /* Whitespace.  */
  93.   _ISwprint = _ISwbit (__ISwprint),    /* Printing.  */
  94.   _ISwgraph = _ISwbit (__ISwgraph),    /* Graphical.  */
  95.   _ISwblank = _ISwbit (__ISwblank),    /* Blank (usually SPC and TAB).  */
  96.   _ISwcntrl = _ISwbit (__ISwcntrl),    /* Control character.  */
  97.   _ISwpunct = _ISwbit (__ISwpunct),    /* Punctuation.  */
  98.   _ISwalnum = _ISwbit (__ISwalnum)    /* Alphanumeric.  */
  99. };
  100. # endif /* Not _ISwbit  */
  101.  
  102.  
  103. __BEGIN_DECLS
  104.  
  105. __BEGIN_NAMESPACE_C99
  106. /*
  107.  * Wide-character classification functions: 7.15.2.1.
  108.  */
  109.  
  110. /* Test for any wide character for which `iswalpha' or `iswdigit' is
  111.    true.  */
  112. extern int iswalnum (wint_t __wc) __THROW;
  113.  
  114. /* Test for any wide character for which `iswupper' or 'iswlower' is
  115.    true, or any wide character that is one of a locale-specific set of
  116.    wide-characters for which none of `iswcntrl', `iswdigit',
  117.    `iswpunct', or `iswspace' is true.  */
  118. extern int iswalpha (wint_t __wc) __THROW;
  119.  
  120. /* Test for any control wide character.  */
  121. extern int iswcntrl (wint_t __wc) __THROW;
  122.  
  123. /* Test for any wide character that corresponds to a decimal-digit
  124.    character.  */
  125. extern int iswdigit (wint_t __wc) __THROW;
  126.  
  127. /* Test for any wide character for which `iswprint' is true and
  128.    `iswspace' is false.  */
  129. extern int iswgraph (wint_t __wc) __THROW;
  130.  
  131. /* Test for any wide character that corresponds to a lowercase letter
  132.    or is one of a locale-specific set of wide characters for which
  133.    none of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true.  */
  134. extern int iswlower (wint_t __wc) __THROW;
  135.  
  136. /* Test for any printing wide character.  */
  137. extern int iswprint (wint_t __wc) __THROW;
  138.  
  139. /* Test for any printing wide character that is one of a
  140.    locale-specific et of wide characters for which neither `iswspace'
  141.    nor `iswalnum' is true.  */
  142. extern int iswpunct (wint_t __wc) __THROW;
  143.  
  144. /* Test for any wide character that corresponds to a locale-specific
  145.    set of wide characters for which none of `iswalnum', `iswgraph', or
  146.    `iswpunct' is true.  */
  147. extern int iswspace (wint_t __wc) __THROW;
  148.  
  149. /* Test for any wide character that corresponds to an uppercase letter
  150.    or is one of a locale-specific set of wide character for which none
  151.    of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true.  */
  152. extern int iswupper (wint_t __wc) __THROW;
  153.  
  154. /* Test for any wide character that corresponds to a hexadecimal-digit
  155.    character equivalent to that performed be the functions described
  156.    in the previous subclause.  */
  157. extern int iswxdigit (wint_t __wc) __THROW;
  158.  
  159. /* Test for any wide character that corresponds to a standard blank
  160.    wide character or a locale-specific set of wide characters for
  161.    which `iswalnum' is false.  */
  162. # ifdef __USE_ISOC99
  163. extern int iswblank (wint_t __wc) __THROW;
  164. # endif
  165.  
  166. /*
  167.  * Extensible wide-character classification functions: 7.15.2.2.
  168.  */
  169.  
  170. /* Construct value that describes a class of wide characters identified
  171.    by the string argument PROPERTY.  */
  172. extern wctype_t wctype (__const char *__property) __THROW;
  173.  
  174. /* Determine whether the wide-character WC has the property described by
  175.    DESC.  */
  176. extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
  177. __END_NAMESPACE_C99
  178.  
  179.  
  180. /*
  181.  * Wide-character case-mapping functions: 7.15.3.1.
  182.  */
  183.  
  184. __BEGIN_NAMESPACE_C99
  185. /* Scalar type that can hold values which represent locale-specific
  186.    character mappings.  */
  187. typedef __const __int32_t *wctrans_t;
  188. __END_NAMESPACE_C99
  189. #ifdef __USE_GNU
  190. __USING_NAMESPACE_C99(wctrans_t)
  191. #endif
  192.  
  193. __BEGIN_NAMESPACE_C99
  194. /* Converts an uppercase letter to the corresponding lowercase letter.  */
  195. extern wint_t towlower (wint_t __wc) __THROW;
  196.  
  197. /* Converts an lowercase letter to the corresponding uppercase letter.  */
  198. extern wint_t towupper (wint_t __wc) __THROW;
  199. __END_NAMESPACE_C99
  200.  
  201. __END_DECLS
  202.  
  203. #endif    /* need iswxxx.  */
  204.  
  205.  
  206. /* The remaining definitions and declarations must not appear in the
  207.    <wcsmbs.h> header.  */
  208. #ifdef _WCTYPE_H
  209.  
  210. /*
  211.  * Extensible wide-character mapping functions: 7.15.3.2.
  212.  */
  213.  
  214. __BEGIN_DECLS
  215.  
  216. __BEGIN_NAMESPACE_C99
  217. /* Construct value that describes a mapping between wide characters
  218.    identified by the string argument PROPERTY.  */
  219. extern wctrans_t wctrans (__const char *__property) __THROW;
  220.  
  221. /* Map the wide character WC using the mapping described by DESC.  */
  222. extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __THROW;
  223. __END_NAMESPACE_C99
  224.  
  225. # ifdef __USE_GNU
  226. /* Declare the interface to extended locale model.  */
  227. #  include <xlocale.h>
  228.  
  229. /* Test for any wide character for which `iswalpha' or `iswdigit' is
  230.    true.  */
  231. extern int iswalnum_l (wint_t __wc, __locale_t __locale) __THROW;
  232.  
  233. /* Test for any wide character for which `iswupper' or 'iswlower' is
  234.    true, or any wide character that is one of a locale-specific set of
  235.    wide-characters for which none of `iswcntrl', `iswdigit',
  236.    `iswpunct', or `iswspace' is true.  */
  237. extern int iswalpha_l (wint_t __wc, __locale_t __locale) __THROW;
  238.  
  239. /* Test for any control wide character.  */
  240. extern int iswcntrl_l (wint_t __wc, __locale_t __locale) __THROW;
  241.  
  242. /* Test for any wide character that corresponds to a decimal-digit
  243.    character.  */
  244. extern int iswdigit_l (wint_t __wc, __locale_t __locale) __THROW;
  245.  
  246. /* Test for any wide character for which `iswprint' is true and
  247.    `iswspace' is false.  */
  248. extern int iswgraph_l (wint_t __wc, __locale_t __locale) __THROW;
  249.  
  250. /* Test for any wide character that corresponds to a lowercase letter
  251.    or is one of a locale-specific set of wide characters for which
  252.    none of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true.  */
  253. extern int iswlower_l (wint_t __wc, __locale_t __locale) __THROW;
  254.  
  255. /* Test for any printing wide character.  */
  256. extern int iswprint_l (wint_t __wc, __locale_t __locale) __THROW;
  257.  
  258. /* Test for any printing wide character that is one of a
  259.    locale-specific et of wide characters for which neither `iswspace'
  260.    nor `iswalnum' is true.  */
  261. extern int iswpunct_l (wint_t __wc, __locale_t __locale) __THROW;
  262.  
  263. /* Test for any wide character that corresponds to a locale-specific
  264.    set of wide characters for which none of `iswalnum', `iswgraph', or
  265.    `iswpunct' is true.  */
  266. extern int iswspace_l (wint_t __wc, __locale_t __locale) __THROW;
  267.  
  268. /* Test for any wide character that corresponds to an uppercase letter
  269.    or is one of a locale-specific set of wide character for which none
  270.    of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true.  */
  271. extern int iswupper_l (wint_t __wc, __locale_t __locale) __THROW;
  272.  
  273. /* Test for any wide character that corresponds to a hexadecimal-digit
  274.    character equivalent to that performed be the functions described
  275.    in the previous subclause.  */
  276. extern int iswxdigit_l (wint_t __wc, __locale_t __locale) __THROW;
  277.  
  278. /* Test for any wide character that corresponds to a standard blank
  279.    wide character or a locale-specific set of wide characters for
  280.    which `iswalnum' is false.  */
  281. extern int iswblank_l (wint_t __wc, __locale_t __locale) __THROW;
  282.  
  283. /* Construct value that describes a class of wide characters identified
  284.    by the string argument PROPERTY.  */
  285. extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
  286.      __THROW;
  287.  
  288. /* Determine whether the wide-character WC has the property described by
  289.    DESC.  */
  290. extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
  291.      __THROW;
  292.  
  293.  
  294. /*
  295.  * Wide-character case-mapping functions.
  296.  */
  297.  
  298. /* Converts an uppercase letter to the corresponding lowercase letter.  */
  299. extern wint_t towlower_l (wint_t __wc, __locale_t __locale) __THROW;
  300.  
  301. /* Converts an lowercase letter to the corresponding uppercase letter.  */
  302. extern wint_t towupper_l (wint_t __wc, __locale_t __locale) __THROW;
  303.  
  304. /* Construct value that describes a mapping between wide characters
  305.    identified by the string argument PROPERTY.  */
  306. extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
  307.      __THROW;
  308.  
  309. /* Map the wide character WC using the mapping described by DESC.  */
  310. extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
  311.                __locale_t __locale) __THROW;
  312.  
  313. # endif /* Use GNU.  */
  314.  
  315. __END_DECLS
  316.  
  317. #endif    /* __WCTYPE_H defined.  */
  318.  
  319. #endif /* wctype.h  */
  320.