wchar.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:8k
源码类别:

DVD

开发平台:

C/C++

  1. /*
  2.  * Benedict R. Gaster
  3.  * Copyright STMicroelectronics 1999
  4.  */
  5. #ifndef __wchar_h
  6. #define __wchar_h
  7. #ifdef  __cplusplus
  8. extern "C" {
  9. #endif
  10. #include "stddef.h"
  11. #include "stdio.h"
  12. #include "stdarg.h"
  13. #ifndef __size_t
  14. #  define __size_t
  15. #  ifndef _STDC_C_TYPES_H
  16.   /*typedef unsigned int size_t; */        /*  see :<stddef.h>, <stdio.h>  */
  17. #  endif
  18. #endif
  19. #ifndef __wint_t
  20. #  define __wint_t
  21. typedef  int wint_t;
  22. #endif
  23. #ifndef NULL
  24. #  ifdef __cplusplus
  25. #    define NULL 0
  26. #  else
  27. #    define NULL (void *)0
  28. #  endif
  29.                              /* also in  <stddef.h> */
  30. #endif
  31. /* incomplete struct tm see <time.h> also */
  32. struct tm ;
  33. /* mbstate_t type definition */
  34. typedef struct
  35. {
  36.   char     _State;
  37.   wchar_t  _Wchar;
  38. } mbstate_t ;
  39. /*
  40.  * benedict 20/2/2000
  41.  * the following two hash defines are used in the definitions of WCHAR_MIN
  42.  * and WCHAR_MAX, respetively. they are copies of the same hash defines
  43.  * from <limits.h> but are included here as it is not a requirment for
  44.  * <limits.h> to be included for <wchar.h>.
  45.  *
  46.  * it would be nice to have no copies but this would require pulling out
  47.  * the definitions of CHAR_MIN and CHAR_MAX from <limits.h>, putting
  48.  * them in a seperate header and then including that header from both
  49.  * <limits.h> and <wchar.h>.
  50.  */
  51. #ifdef __SIGNED_CHAR__
  52. #  if !(defined(CHAR_MIN))
  53. #    define CHAR_MIN (-128)
  54. #  endif
  55. #  if !(defined(CHAR_MAX))
  56. #    define CHAR_MAX 127
  57. #  endif
  58. #else
  59. #  if !(defined(CHAR_MIN))
  60. #    define CHAR_MIN 0
  61. #  endif
  62. #  if !(defined(CHAR_MAX))
  63. #    define CHAR_MAX 255
  64. #  endif
  65. #endif
  66. #if !(defined(CHAR_MIN))
  67.   /*#define CHAR_MIN      (-0x80)*/ /* min value of a "signed char" */
  68. #define CHAR_MIN (-128)          /* min value of a "signed char" */
  69. #endif
  70. #if !(defined(CHAR_MAX))
  71.   /*#define CHAR_MAX 0x7f*/ /* max value of a "signed char" */
  72. #define CHAR_MAX  127     /* max value of a "signed char" */
  73. #endif
  74. /***********************************************************************/
  75. /*                   MACROS  DEFINITIONS                               */
  76. /***********************************************************************/
  77. #define WCHAR_MAX  CHAR_MAX
  78.                /*max value representable by an object of type wchar_t */
  79. #define WCHAR_MIN CHAR_MIN
  80.               /*min value representable by an object of type wchar_t */
  81. #ifndef WEOF /* wide end of file */
  82. #define WEOF  (-1)
  83. #endif
  84. /***********************************************************************/
  85. /*  EXTENDED MULTIBYTE AND WIDE CHARACTER CONVERSION UTILITIES         */
  86. /***********************************************************************/
  87. wint_t btowc(int c);
  88. int wctob(wint_t c);
  89. int mbsinit(const mbstate_t *ps);
  90. /***********************************************************************
  91.  *            RESTARTABLE CONVERSION FUNCTIONS                         *
  92.  ***********************************************************************/
  93. size_t mbrlen(const char *s, size_t n , mbstate_t *ps);
  94. size_t mbrtowc(wchar_t *pwc , const char *s, size_t n, 
  95.                                                  mbstate_t *ps);
  96. size_t wcrtomb(char *s , wchar_t wc , mbstate_t *ps );
  97. size_t mbsrtowcs( wchar_t *ws , const char **ps , size_t n, 
  98.                                                     mbstate_t *pcs );
  99. size_t wcsrtombs(char *s, const wchar_t **pws ,  size_t n, 
  100.                                                     mbstate_t *pcs );
  101. /***********************************************************************
  102.  *                WIDE-STRING FUNCTIONS                                *
  103.  ***********************************************************************/
  104. wchar_t *wcscat( wchar_t *dest, const  wchar_t *src );
  105. wchar_t *wcsncat( wchar_t *dest , const wchar_t *src ,size_t n);
  106. int      wcscmp(const wchar_t *s1 , const wchar_t *s2);
  107. int      wcsncmp( const wchar_t *s1, const wchar_t *s2 , size_t n);
  108. wchar_t  *wcscpy(wchar_t *dest , const wchar_t *src);
  109. wchar_t  *wcsncpy( wchar_t *dest , const wchar_t *src ,size_t n);
  110. size_t    wcslen( const wchar_t *s);
  111. size_t    wcsspn( const wchar_t *s ,const wchar_t *set);
  112. size_t    wcscspn(const wchar_t *s , const wchar_t *set);
  113. wchar_t  *wcstok ( wchar_t *str , const wchar_t *set , wchar_t **ptr);
  114. double    wcstod ( const wchar_t *str , wchar_t **ptr);
  115. long      wcstol(const wchar_t *str , wchar_t **ptr , int base);
  116. unsigned  long wcstoul ( const wchar_t *str , wchar_t **ptr , int base);
  117. int       wcscoll( const wchar_t *s1 , const wchar_t *s2);
  118. size_t    wcsxfrm(wchar_t *dest , const wchar_t *src , size_t len);
  119. #ifdef __cplusplus
  120. extern const wchar_t* wcschr(const wchar_t* s, wchar_t c);
  121. extern const wchar_t* wcspbrk(const wchar_t* s, const wchar_t* set);
  122. extern const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);
  123. extern const wchar_t* wcsstr(const wchar_t* src, const wchar_t* sub);
  124. extern "C++"
  125. {
  126.   extern inline wchar_t* wcschr(wchar_t* s, wchar_t c)
  127.   {
  128.       return (wchar_t*) (wcschr((const wchar_t*) s, c));
  129.   }
  130.   extern inline wchar_t* wcspbrk(wchar_t* s, const wchar_t* set)
  131.   {
  132.       return (wchar_t*) (wcspbrk((const wchar_t*) s, set));
  133.   }
  134.   extern inline wchar_t* wcsrchr(wchar_t* s, wchar_t c)
  135.   {
  136.       return (wchar_t*) (wcsrchr((const wchar_t*) s, c));
  137.   }
  138.   extern inline wchar_t* wcsstr(wchar_t* src, const wchar_t* sub)
  139.   {
  140.       return (wchar_t*) (wcsstr((const wchar_t*) src, sub));
  141.   }
  142. }
  143. #else
  144. wchar_t  *wcschr( const wchar_t *s , wchar_t c);
  145. wchar_t  *wcsrchr(const wchar_t *s , wchar_t c);
  146. wchar_t  *wcspbrk( const wchar_t *s , const wchar_t *set);
  147. wchar_t  *wcsstr ( const wchar_t *src , const wchar_t *sub);
  148. #endif /* __cplusplus */
  149. /************************************************************************
  150.  *                     MEMORY FUNCTIONS                                 *
  151.  ************************************************************************/
  152. int wmemcmp (const wchar_t *ptr1 ,const wchar_t *ptr2 , size_t len);
  153. wchar_t *wmemcpy( wchar_t *dest , const wchar_t *src ,size_t len);
  154. wchar_t *wmemmove( wchar_t *dest , const wchar_t *src ,size_t len);
  155. wchar_t *wmemset( wchar_t *ptr, wchar_t val, size_t len);
  156. #ifdef __cplusplus
  157. extern const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
  158. extern "C++"
  159. {
  160.   extern inline wchar_t* wmemchr(wchar_t* s, wchar_t c, size_t n)
  161.   {
  162.       return (wchar_t*) (wmemchr((const wchar_t*) s, c, n));
  163.   }
  164. }
  165. #else /* __cplusplus */
  166. wchar_t *wmemchr(const wchar_t * , wchar_t , size_t );
  167. #endif /* __cplusplus */
  168. /***************************************************************************
  169.  *              WIDE-STRING  TIME  CONVERSION  FUNCTION                    *
  170.  ***************************************************************************/
  171. size_t wcsftime (wchar_t *s, size_t msz, const wchar_t *fmt, const struct tm *tm);
  172.   /*typedef struct __sFILE __FILE ;*/ /* avoid to introduce stdio.h */
  173. /************************************************************************
  174.  *             WIDE- CHARACTER I/O FUNCTIONS AND MACROS                 *
  175.  ************************************************************************/
  176. wint_t fgetwc(FILE *stream);
  177. wchar_t *fgetws(wchar_t *s , int n, FILE *stream);
  178. wint_t fputwc(wchar_t c, FILE *stream);
  179. int fputws( const wchar_t *s , FILE *stream );
  180. wint_t (getwc)(FILE *stream);
  181. wint_t (getwchar)(void);
  182. wint_t putwc (wchar_t c ,FILE *stream);
  183. wint_t putwchar( wchar_t c);
  184. wint_t ungetwc(wint_t c, FILE *stream);
  185. int fwide (FILE *stream ,int mode);
  186. /************************************************************************
  187.               WIDE- CHARACTER I/O STREAMS FUNCTIONS
  188.  ************************************************************************/
  189.   /*typedef  char * _va_list[1] ;*/ /* that avoids to include stdarg.h  */
  190. int fwscanf( FILE *stream , const wchar_t *format , ...);
  191. int wscanf( const wchar_t *format , ...);
  192. int swscanf(const  wchar_t *s , const wchar_t *format , ...);
  193. int fwprintf( FILE *stream , const wchar_t *format , ...);
  194. int wprintf( const wchar_t *format , ...);
  195. int swprintf(wchar_t *s , size_t n , const wchar_t * format , ...);
  196. int vfwprintf( FILE *stream , const wchar_t *format, va_list a);
  197. int vwprintf(const wchar_t *format, va_list arg);
  198. int vswprintf(wchar_t *s, size_t n , const wchar_t *format,va_list a);
  199. #ifdef  __cplusplus
  200. }
  201. #endif
  202. #endif