home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / wchar.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  16KB  |  465 lines

  1. /*
  2.  * wchar.h
  3.  * This file has no copyright assigned and is placed in the Public Domain.
  4.  * This file is a part of the mingw-runtime package.
  5.  * No warranty is given; refer to the file DISCLAIMER within the package.
  6.  *
  7.  * Defines of all functions for supporting wide characters. Actually it
  8.  * just includes all those headers, which is not a good thing to do from a
  9.  * processing time point of view, but it does mean that everything will be
  10.  * in sync.
  11.  *
  12.  */
  13.  
  14. #ifndef    _WCHAR_H_
  15. #define    _WCHAR_H_
  16.  
  17. /* All the headers include this file. */
  18. #include <_mingw.h>
  19.  
  20. #ifndef RC_INVOKED
  21.  
  22. #define __need_size_t
  23. #define __need_wint_t
  24. #define __need_wchar_t
  25. #define __need_NULL
  26. #include <stddef.h>
  27.  
  28. #ifndef __VALIST
  29. #if defined __GNUC__ && __GNUC__ >= 3
  30. #define __need___va_list
  31. #include <stdarg.h>
  32. #define __VALIST __builtin_va_list
  33. #else
  34. #define __VALIST char*
  35. #endif
  36. #endif
  37.  
  38. #endif /* Not RC_INVOKED */
  39.  
  40. /*
  41.  * MSDN says that isw* char classifications are in wchar.h and wctype.h.
  42.  * Although the wctype names are ANSI, their exposure in this header is
  43.  * not.
  44.  */
  45. #include <wctype.h>
  46.  
  47. #ifndef    __STRICT_ANSI__
  48. /* This is necessary to support the the non-ANSI wchar declarations
  49.    here. */
  50. #include <sys/types.h>
  51. #endif /* __STRICT_ANSI__ */
  52.  
  53. #define WCHAR_MIN    0
  54. #define WCHAR_MAX    ((wchar_t)-1)
  55.  
  56. #ifndef WEOF
  57. #define    WEOF    (wchar_t)(0xFFFF)
  58. #endif
  59.  
  60. #ifndef RC_INVOKED
  61.  
  62. #ifdef __cplusplus 
  63. extern "C" {
  64. #endif
  65.  
  66. #ifndef _FILE_DEFINED  /* Also in stdio.h */
  67. #define    _FILE_DEFINED
  68. typedef struct _iobuf
  69. {
  70.     char*    _ptr;
  71.     int    _cnt;
  72.     char*    _base;
  73.     int    _flag;
  74.     int    _file;
  75.     int    _charbuf;
  76.     int    _bufsiz;
  77.     char*    _tmpfname;
  78. } FILE;
  79. #endif    /* Not _FILE_DEFINED */
  80.  
  81. #ifndef _TIME_T_DEFINED  /* Also in time.h */
  82. typedef long time_t;
  83. #define _TIME_T_DEFINED
  84. #endif
  85.  
  86. #ifndef _TM_DEFINED /* Also in time.h */
  87. struct tm {
  88.         int tm_sec;     /* seconds after the minute - [0,59] */
  89.         int tm_min;     /* minutes after the hour - [0,59] */
  90.         int tm_hour;    /* hours since midnight - [0,23] */
  91.         int tm_mday;    /* day of the month - [1,31] */
  92.         int tm_mon;     /* months since January - [0,11] */
  93.         int tm_year;    /* years since 1900 */
  94.         int tm_wday;    /* days since Sunday - [0,6] */
  95.         int tm_yday;    /* days since January 1 - [0,365] */
  96.         int tm_isdst;   /* daylight savings time flag */
  97.         };
  98. #define _TM_DEFINED
  99. #endif
  100.  
  101. #ifndef _WSTDIO_DEFINED
  102. /*  Also in stdio.h - keep in sync */
  103. _CRTIMP int __cdecl    fwprintf (FILE*, const wchar_t*, ...);
  104. _CRTIMP int __cdecl    wprintf (const wchar_t*, ...);
  105. _CRTIMP int __cdecl    swprintf (wchar_t*, const wchar_t*, ...);
  106. _CRTIMP int __cdecl    _snwprintf (wchar_t*, size_t, const wchar_t*, ...);
  107. _CRTIMP int __cdecl    vfwprintf (FILE*, const wchar_t*, __VALIST);
  108. _CRTIMP int __cdecl    vwprintf (const wchar_t*, __VALIST);
  109. _CRTIMP int __cdecl    vswprintf (wchar_t*, const wchar_t*, __VALIST);
  110. _CRTIMP int __cdecl    _vsnwprintf (wchar_t*, size_t, const wchar_t*, __VALIST);
  111. _CRTIMP int __cdecl    fwscanf (FILE*, const wchar_t*, ...);
  112. _CRTIMP int __cdecl    wscanf (const wchar_t*, ...);
  113. _CRTIMP int __cdecl    swscanf (const wchar_t*, const wchar_t*, ...);
  114. _CRTIMP wint_t __cdecl    fgetwc (FILE*);
  115. _CRTIMP wint_t __cdecl    fputwc (wchar_t, FILE*);
  116. _CRTIMP wint_t __cdecl    ungetwc (wchar_t, FILE*);
  117.  
  118. #ifdef __MSVCRT__ 
  119. _CRTIMP wchar_t* __cdecl fgetws (wchar_t*, int, FILE*);
  120. _CRTIMP int __cdecl    fputws (const wchar_t*, FILE*);
  121. _CRTIMP wint_t __cdecl    getwc (FILE*);
  122. _CRTIMP wint_t __cdecl    getwchar (void);
  123. _CRTIMP wint_t __cdecl    putwc (wint_t, FILE*);
  124. _CRTIMP wint_t __cdecl    putwchar (wint_t);
  125. #ifndef __STRICT_ANSI__
  126. _CRTIMP wchar_t* __cdecl _getws (wchar_t*);
  127. _CRTIMP int __cdecl    _putws (const wchar_t*);
  128. _CRTIMP FILE* __cdecl    _wfdopen(int, wchar_t *);
  129. _CRTIMP FILE* __cdecl    _wfopen (const wchar_t*, const wchar_t*);
  130. _CRTIMP FILE* __cdecl    _wfreopen (const wchar_t*, const wchar_t*, FILE*);
  131. _CRTIMP FILE* __cdecl    _wfsopen (const wchar_t*, const wchar_t*, int);
  132. _CRTIMP wchar_t* __cdecl _wtmpnam (wchar_t*);
  133. _CRTIMP wchar_t* __cdecl _wtempnam (const wchar_t*, const wchar_t*);
  134. _CRTIMP int __cdecl    _wrename (const wchar_t*, const wchar_t*);
  135. _CRTIMP int __cdecl    _wremove (const wchar_t*);
  136. _CRTIMP void __cdecl    _wperror (const wchar_t*);
  137. _CRTIMP FILE* __cdecl    _wpopen (const wchar_t*, const wchar_t*);
  138. #endif  /* __STRICT_ANSI__ */
  139. #endif    /* __MSVCRT__ */
  140.  
  141. #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
  142. int __cdecl snwprintf (wchar_t* s, size_t n, const wchar_t*  format, ...);
  143. __CRT_INLINE int __cdecl
  144. vsnwprintf (wchar_t* s, size_t n, const wchar_t* format, __VALIST arg)
  145.   { return _vsnwprintf ( s, n, format, arg);}
  146. int __cdecl vwscanf (const wchar_t * __restrict__, __VALIST);
  147. int __cdecl vfwscanf (FILE * __restrict__,
  148.                const wchar_t * __restrict__, __VALIST);
  149. int __cdecl vswscanf (const wchar_t * __restrict__,
  150.                const wchar_t * __restrict__, __VALIST);
  151. #endif
  152.  
  153. #define _WSTDIO_DEFINED
  154. #endif /* _WSTDIO_DEFINED */
  155.  
  156. #ifndef _WSTDLIB_DEFINED /* also declared in stdlib.h */
  157. _CRTIMP long __cdecl         wcstol (const wchar_t*, wchar_t**, int);
  158. _CRTIMP unsigned long __cdecl    wcstoul (const wchar_t*, wchar_t**, int);
  159. _CRTIMP double __cdecl        wcstod (const wchar_t*, wchar_t**);
  160. #if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
  161. __CRT_INLINE float __cdecl wcstof( const wchar_t *nptr, wchar_t **endptr)
  162. {  return (wcstod(nptr, endptr)); }
  163. long double __cdecl wcstold (const wchar_t * __restrict__, wchar_t ** __restrict__);
  164. #endif /* __NO_ISOCEXT */
  165. #define  _WSTDLIB_DEFINED
  166. #endif /* _WSTDLIB_DEFINED */
  167.  
  168. #ifndef _WTIME_DEFINED
  169. #ifndef __STRICT_ANSI__
  170. #ifdef __MSVCRT__
  171. /* wide function prototypes, also declared in time.h */
  172. _CRTIMP wchar_t* __cdecl    _wasctime (const struct tm*);
  173. _CRTIMP wchar_t* __cdecl    _wctime (const time_t*);
  174. _CRTIMP wchar_t* __cdecl    _wstrdate (wchar_t*);
  175. _CRTIMP wchar_t* __cdecl    _wstrtime (wchar_t*);
  176. #if __MSVCRT_VERSION__ >= 0x601
  177. _CRTIMP wchar_t* __cdecl    _wctime64 (const __time64_t*);
  178. #endif
  179. #endif /* __MSVCRT__ */
  180. #endif /* __STRICT_ANSI__ */
  181. _CRTIMP size_t __cdecl    wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*);
  182. #define _WTIME_DEFINED
  183. #endif /* _WTIME_DEFINED */ 
  184.  
  185.  
  186. #ifndef _WSTRING_DEFINED
  187. /*
  188.  * Unicode versions of the standard string calls.
  189.  * Also in string.h.
  190.  */
  191. _CRTIMP wchar_t* __cdecl wcscat (wchar_t*, const wchar_t*);
  192. _CRTIMP wchar_t* __cdecl wcschr (const wchar_t*, wchar_t);
  193. _CRTIMP int __cdecl    wcscmp (const wchar_t*, const wchar_t*);
  194. _CRTIMP int __cdecl    wcscoll (const wchar_t*, const wchar_t*);
  195. _CRTIMP wchar_t* __cdecl wcscpy (wchar_t*, const wchar_t*);
  196. _CRTIMP size_t __cdecl    wcscspn (const wchar_t*, const wchar_t*);
  197. /* Note:  _wcserror requires __MSVCRT_VERSION__ >= 0x0700.  */
  198. _CRTIMP size_t __cdecl    wcslen (const wchar_t*);
  199. _CRTIMP wchar_t* __cdecl wcsncat (wchar_t*, const wchar_t*, size_t);
  200. _CRTIMP int __cdecl    wcsncmp(const wchar_t*, const wchar_t*, size_t);
  201. _CRTIMP wchar_t* __cdecl wcsncpy(wchar_t*, const wchar_t*, size_t);
  202. _CRTIMP wchar_t* __cdecl wcspbrk(const wchar_t*, const wchar_t*);
  203. _CRTIMP wchar_t* __cdecl wcsrchr(const wchar_t*, wchar_t);
  204. _CRTIMP size_t __cdecl    wcsspn(const wchar_t*, const wchar_t*);
  205. _CRTIMP wchar_t* __cdecl wcsstr(const wchar_t*, const wchar_t*);
  206. _CRTIMP wchar_t* __cdecl wcstok(wchar_t*, const wchar_t*);
  207. _CRTIMP size_t __cdecl    wcsxfrm(wchar_t*, const wchar_t*, size_t);
  208.  
  209. #ifndef    __STRICT_ANSI__
  210. /*
  211.  * Unicode versions of non-ANSI functions provided by CRTDLL.
  212.  */
  213.  
  214. /* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
  215. #define        _wcscmpi    _wcsicmp
  216.  
  217. _CRTIMP wchar_t* __cdecl _wcsdup (const wchar_t*);
  218. _CRTIMP int __cdecl    _wcsicmp (const wchar_t*, const wchar_t*);
  219. _CRTIMP int __cdecl    _wcsicoll (const wchar_t*, const wchar_t*);
  220. _CRTIMP wchar_t* __cdecl _wcslwr (wchar_t*);
  221. _CRTIMP int __cdecl    _wcsnicmp (const wchar_t*, const wchar_t*, size_t);
  222. _CRTIMP wchar_t* __cdecl _wcsnset (wchar_t*, wchar_t, size_t);
  223. _CRTIMP wchar_t* __cdecl _wcsrev (wchar_t*);
  224. _CRTIMP wchar_t* __cdecl _wcsset (wchar_t*, wchar_t);
  225. _CRTIMP wchar_t* __cdecl _wcsupr (wchar_t*);
  226.  
  227. #ifdef __MSVCRT__
  228. _CRTIMP int __cdecl  _wcsncoll(const wchar_t*, const wchar_t*, size_t);
  229. _CRTIMP int   __cdecl _wcsnicoll(const wchar_t*, const wchar_t*, size_t);
  230. #if __MSVCRT_VERSION__ >= 0x0700
  231. _CRTIMP  wchar_t* __cdecl _wcserror(int);
  232. _CRTIMP  wchar_t* __cdecl __wcserror(const wchar_t*);
  233. #endif
  234. #endif
  235.  
  236. #ifndef    _NO_OLDNAMES
  237. /* NOTE: There is no _wcscmpi, but this is for compatibility. */
  238. __CRT_INLINE int __cdecl
  239. wcscmpi (const wchar_t * __ws1, const wchar_t * __ws2)
  240.   {return _wcsicmp (__ws1, __ws2);}
  241. _CRTIMP wchar_t* __cdecl wcsdup (const wchar_t*);
  242. _CRTIMP int __cdecl    wcsicmp (const wchar_t*, const wchar_t*);
  243. _CRTIMP int __cdecl    wcsicoll (const wchar_t*, const wchar_t*);
  244. _CRTIMP wchar_t* __cdecl wcslwr (wchar_t*);
  245. _CRTIMP int __cdecl    wcsnicmp (const wchar_t*, const wchar_t*, size_t);
  246. _CRTIMP wchar_t* __cdecl wcsnset (wchar_t*, wchar_t, size_t);
  247. _CRTIMP wchar_t* __cdecl wcsrev (wchar_t*);
  248. _CRTIMP wchar_t* __cdecl wcsset (wchar_t*, wchar_t);
  249. _CRTIMP wchar_t* __cdecl wcsupr (wchar_t*);
  250. #endif    /* Not _NO_OLDNAMES */
  251.  
  252. #endif    /* Not strict ANSI */
  253.  
  254. #define _WSTRING_DEFINED
  255. #endif  /* _WSTRING_DEFINED */
  256.  
  257. /* These are resolved by -lmsvcp60 */
  258. /* If you don't have msvcp60.dll in your windows system directory, you can
  259.    easily obtain it with a search from your favorite search engine. */
  260. #ifndef __STRICT_ANSI__
  261. typedef wchar_t _Wint_t;
  262. #endif
  263.  
  264. typedef int mbstate_t;
  265.  
  266. wint_t __cdecl btowc(int);
  267. size_t __cdecl mbrlen(const char *, size_t, mbstate_t *);
  268. size_t __cdecl mbrtowc(wchar_t *, const char *, size_t, mbstate_t *);
  269. size_t __cdecl mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *);
  270.  
  271. size_t __cdecl wcrtomb(char *, wchar_t, mbstate_t *);
  272. size_t __cdecl wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
  273. int __cdecl wctob(wint_t);
  274.  
  275. #ifndef __NO_ISOCEXT /* these need static lib libmingwex.a */
  276. __CRT_INLINE int __cdecl fwide(FILE* __UNUSED_PARAM(stream), int __UNUSED_PARAM(mode))
  277.   {return -1;} /* limited to byte orientation */ 
  278. __CRT_INLINE int __cdecl mbsinit(const mbstate_t* __UNUSED_PARAM(ps))
  279.   {return 1;}
  280. wchar_t* __cdecl wmemset(wchar_t* s, wchar_t c, size_t n);
  281. wchar_t* __cdecl wmemchr(const wchar_t* s, wchar_t c, size_t n);
  282. int wmemcmp(const wchar_t* s1, const wchar_t * s2, size_t n);
  283. wchar_t* __cdecl wmemcpy(wchar_t* __restrict__ s1, const wchar_t* __restrict__ s2,
  284.          size_t n);
  285. wchar_t* __cdecl wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
  286. long long __cdecl wcstoll(const wchar_t* __restrict__ nptr,
  287.           wchar_t** __restrict__ endptr, int base);
  288. unsigned long long __cdecl wcstoull(const wchar_t* __restrict__ nptr,
  289.                 wchar_t ** __restrict__ endptr, int base);
  290. #endif /* __NO_ISOCEXT */
  291.  
  292. #ifndef    __STRICT_ANSI__
  293. /* non-ANSI wide char functions from io.h, direct.h, sys/stat.h and locale.h.  */
  294.  
  295. #ifndef    _FSIZE_T_DEFINED
  296. typedef    unsigned long    _fsize_t;
  297. #define _FSIZE_T_DEFINED
  298. #endif
  299.  
  300. #ifndef _WFINDDATA_T_DEFINED
  301. struct _wfinddata_t {
  302.     unsigned    attrib;
  303.     time_t        time_create;    /* -1 for FAT file systems */
  304.     time_t        time_access;    /* -1 for FAT file systems */
  305.     time_t        time_write;
  306.     _fsize_t    size;
  307.     wchar_t        name[260];    /* may include spaces. */
  308. };
  309. struct _wfinddatai64_t {
  310.     unsigned    attrib;
  311.     time_t      time_create;
  312.     time_t      time_access;
  313.     time_t      time_write;
  314.     __int64     size;
  315.     wchar_t     name[260];
  316. };
  317. struct __wfinddata64_t {
  318.         unsigned    attrib;
  319.         __time64_t  time_create;    
  320.         __time64_t  time_access;
  321.         __time64_t  time_write;
  322.         _fsize_t    size;
  323.         wchar_t     name[260];
  324. };
  325. #define _WFINDDATA_T_DEFINED
  326. #endif
  327.  
  328. /* Wide character versions. Also defined in io.h. */
  329. /* CHECK: I believe these only exist in MSVCRT, and not in CRTDLL. Also
  330.    applies to other wide character versions? */
  331. #if !defined (_WIO_DEFINED)
  332. #if defined (__MSVCRT__)
  333. #include <stdint.h>  /* For intptr_t.  */
  334. _CRTIMP int __cdecl    _waccess (const wchar_t*, int);
  335. _CRTIMP int __cdecl    _wchmod (const wchar_t*, int);
  336. _CRTIMP int __cdecl    _wcreat (const wchar_t*, int);
  337. _CRTIMP long __cdecl    _wfindfirst (const wchar_t*, struct _wfinddata_t *);
  338. _CRTIMP int __cdecl    _wfindnext (long, struct _wfinddata_t *);
  339. _CRTIMP int __cdecl    _wunlink (const wchar_t*);
  340. _CRTIMP int __cdecl    _wopen (const wchar_t*, int, ...);
  341. _CRTIMP int __cdecl    _wsopen (const wchar_t*, int, int, ...);
  342. _CRTIMP wchar_t* __cdecl _wmktemp (wchar_t*);
  343. _CRTIMP long __cdecl    _wfindfirsti64 (const wchar_t*, struct _wfinddatai64_t*);
  344. _CRTIMP int __cdecl     _wfindnexti64 (long, struct _wfinddatai64_t*);
  345. #if __MSVCRT_VERSION__ >= 0x0601
  346. _CRTIMP intptr_t __cdecl _wfindfirst64(const wchar_t*, struct __wfinddata64_t*); 
  347. _CRTIMP intptr_t __cdecl _wfindnext64(intptr_t, struct __wfinddata64_t*);
  348. #endif /* __MSVCRT_VERSION__ >= 0x0601 */
  349. #endif /* defined (__MSVCRT__) */
  350. #define _WIO_DEFINED
  351. #endif /* _WIO_DEFINED */
  352.  
  353. #ifndef _WDIRECT_DEFINED
  354. /* Also in direct.h */
  355. #ifdef __MSVCRT__ 
  356. _CRTIMP int __cdecl      _wchdir (const wchar_t*);
  357. _CRTIMP wchar_t* __cdecl  _wgetcwd (wchar_t*, int);
  358. _CRTIMP wchar_t* __cdecl  _wgetdcwd (int, wchar_t*, int);
  359. _CRTIMP int __cdecl      _wmkdir (const wchar_t*);
  360. _CRTIMP int __cdecl      _wrmdir (const wchar_t*);
  361. #endif    /* __MSVCRT__ */
  362. #define _WDIRECT_DEFINED
  363. #endif /* _WDIRECT_DEFINED */
  364.  
  365. #ifndef _STAT_DEFINED
  366. /*
  367.  * The structure manipulated and returned by stat and fstat.
  368.  *
  369.  * NOTE: If called on a directory the values in the time fields are not only
  370.  * invalid, they will cause localtime et. al. to return NULL. And calling
  371.  * asctime with a NULL pointer causes an Invalid Page Fault. So watch it!
  372.  */
  373. struct _stat
  374. {
  375.     _dev_t    st_dev;        /* Equivalent to drive number 0=A 1=B ... */
  376.     _ino_t    st_ino;        /* Always zero ? */
  377.     _mode_t    st_mode;    /* See above constants */
  378.     short    st_nlink;    /* Number of links. */
  379.     short    st_uid;        /* User: Maybe significant on NT ? */
  380.     short    st_gid;        /* Group: Ditto */
  381.     _dev_t    st_rdev;    /* Seems useless (not even filled in) */
  382.     _off_t    st_size;    /* File size in bytes */
  383.     time_t    st_atime;    /* Accessed date (always 00:00 hrs local
  384.                  * on FAT) */
  385.     time_t    st_mtime;    /* Modified time */
  386.     time_t    st_ctime;    /* Creation time */
  387. };
  388.  
  389. struct stat
  390. {
  391.     _dev_t    st_dev;        /* Equivalent to drive number 0=A 1=B ... */
  392.     _ino_t    st_ino;        /* Always zero ? */
  393.     _mode_t    st_mode;    /* See above constants */
  394.     short    st_nlink;    /* Number of links. */
  395.     short    st_uid;        /* User: Maybe significant on NT ? */
  396.     short    st_gid;        /* Group: Ditto */
  397.     _dev_t    st_rdev;    /* Seems useless (not even filled in) */
  398.     _off_t    st_size;    /* File size in bytes */
  399.     time_t    st_atime;    /* Accessed date (always 00:00 hrs local
  400.                  * on FAT) */
  401.     time_t    st_mtime;    /* Modified time */
  402.     time_t    st_ctime;    /* Creation time */
  403. };
  404.  
  405. #if defined (__MSVCRT__)
  406. struct _stati64 {
  407.     _dev_t st_dev;
  408.     _ino_t st_ino;
  409.     unsigned short st_mode;
  410.     short st_nlink;
  411.     short st_uid;
  412.     short st_gid;
  413.     _dev_t st_rdev;
  414.     __int64 st_size;
  415.     time_t st_atime;
  416.     time_t st_mtime;
  417.     time_t st_ctime;
  418.     };
  419.  
  420. struct __stat64
  421. {
  422.     _dev_t st_dev;
  423.     _ino_t st_ino;
  424.     _mode_t st_mode;
  425.     short st_nlink;
  426.     short st_uid;
  427.     short st_gid;
  428.     _dev_t st_rdev;
  429.     _off_t st_size;
  430.     __time64_t st_atime;
  431.     __time64_t st_mtime;
  432.     __time64_t st_ctime;
  433. };
  434. #endif  /* __MSVCRT__ */
  435. #define _STAT_DEFINED
  436. #endif /* _STAT_DEFINED */
  437.  
  438. #if !defined ( _WSTAT_DEFINED)
  439. /* also declared in sys/stat.h */
  440. #if defined __MSVCRT__
  441. _CRTIMP int __cdecl    _wstat (const wchar_t*, struct _stat*);
  442. _CRTIMP int __cdecl    _wstati64 (const wchar_t*, struct _stati64*);
  443. #if __MSVCRT_VERSION__ >= 0x0601
  444. _CRTIMP int __cdecl _wstat64 (const wchar_t*, struct __stat64*);
  445. #endif /* __MSVCRT_VERSION__ >= 0x0601 */
  446. #endif  /* __MSVCRT__ */
  447. #define _WSTAT_DEFINED
  448. #endif /* ! _WSTAT_DEFIND  */
  449.  
  450. #ifndef _WLOCALE_DEFINED  /* also declared in locale.h */
  451. _CRTIMP wchar_t* __cdecl _wsetlocale (int, const wchar_t*);
  452. #define _WLOCALE_DEFINED
  453. #endif
  454.  
  455. #endif /* not __STRICT_ANSI__ */
  456.  
  457. #ifdef __cplusplus
  458. }    /* end of extern "C" */
  459. #endif
  460.  
  461. #endif /* Not RC_INVOKED */
  462.  
  463. #endif /* not _WCHAR_H_ */
  464.  
  465.