xref: /reactos/sdk/include/crt/wchar.h (revision 3adf4508)
1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the w64 mingw-runtime package.
4  * No warranty is given; refer to the file DISCLAIMER within this package.
5  */
6 #ifndef _INC_WCHAR
7 #define _INC_WCHAR
8 
9 #include <crtdefs.h>
10 
11 #define __need___va_list
12 #include <stdarg.h>
13 
14 #pragma pack(push,_CRT_PACKING)
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #ifdef _MSC_VER
21 #pragma warning(push)
22 #pragma warning(disable:4820)
23 #endif
24 
25 #ifndef WCHAR_MIN
26 #define WCHAR_MIN 0
27 #endif
28 #ifndef WCHAR_MAX
29 #define WCHAR_MAX ((wchar_t)-1) /* UINT16_MAX */
30 #endif
31 
32 #ifndef WEOF
33 #define WEOF (wint_t)(0xFFFF)
34 #endif
35 
36 #ifndef _FILE_DEFINED
37   struct _iobuf {
38     char *_ptr;
39     int _cnt;
40     char *_base;
41     int _flag;
42     int _file;
43     int _charbuf;
44     int _bufsiz;
45     char *_tmpfname;
46   };
47   typedef struct _iobuf FILE;
48 #define _FILE_DEFINED
49 #endif
50 
51 #ifndef _STDIO_DEFINED
52   _CRTIMP FILE *__cdecl __iob_func(void);
53   _CRTDATA(extern FILE _iob[];)
54 #ifdef _M_CEE_PURE
55 #define _iob __iob_func()
56 #endif
57 #endif
58 
59 #ifndef _STDSTREAM_DEFINED
60 #define _STDSTREAM_DEFINED
61 #define stdin (&_iob[0])
62 #define stdout (&_iob[1])
63 #define stderr (&_iob[2])
64 #endif /* !_STDSTREAM_DEFINED */
65 
66 #ifndef _FSIZE_T_DEFINED
67   typedef unsigned long _fsize_t;
68 #define _FSIZE_T_DEFINED
69 #endif
70 
71 #ifndef _WFINDDATA_T_DEFINED
72   struct _wfinddata_t {
73     unsigned attrib;
74     time_t time_create;
75     time_t time_access;
76     time_t time_write;
77     _fsize_t size;
78     wchar_t name[260];
79   };
80 
81   struct _wfinddata32_t {
82     unsigned attrib;
83     __time32_t time_create;
84     __time32_t time_access;
85     __time32_t time_write;
86     _fsize_t size;
87     wchar_t name[260];
88   };
89 
90 #if _INTEGRAL_MAX_BITS >= 64
91   struct _wfinddatai64_t {
92     unsigned attrib;
93     time_t time_create;
94     time_t time_access;
95     time_t time_write;
96     __MINGW_EXTENSION __int64 size;
97     wchar_t name[260];
98   };
99 
100   struct _wfinddata32i64_t {
101     unsigned attrib;
102     __time32_t time_create;
103     __time32_t time_access;
104     __time32_t time_write;
105     __MINGW_EXTENSION __int64 size;
106     wchar_t name[260];
107   };
108 
109   struct _wfinddata64i32_t {
110     unsigned attrib;
111     __time64_t time_create;
112     __time64_t time_access;
113     __time64_t time_write;
114     _fsize_t size;
115     wchar_t name[260];
116   };
117 
118   struct _wfinddata64_t {
119     unsigned attrib;
120     __time64_t time_create;
121     __time64_t time_access;
122     __time64_t time_write;
123     __MINGW_EXTENSION __int64 size;
124     wchar_t name[260];
125   };
126 #endif
127 
128 #define _WFINDDATA_T_DEFINED
129 #endif /* !_WFINDDATA_T_DEFINED */
130 
131 #ifndef NULL
132 #ifdef __cplusplus
133 #define NULL 0
134 #else
135 #define NULL ((void *)0)
136 #endif
137 #endif
138 
139 #ifndef _CRT_CTYPEDATA_DEFINED
140 # define _CRT_CTYPEDATA_DEFINED
141 # ifndef _CTYPE_DISABLE_MACROS
142 #  ifndef __PCTYPE_FUNC
143 #   ifdef _DLL
144 #    define __PCTYPE_FUNC __pctype_func()
145 #   else
146 #    define __PCTYPE_FUNC _pctype
147 #   endif
148 #  endif /* !__PCTYPE_FUNC */
149   _CRTIMP const unsigned short * __cdecl __pctype_func(void);
150 #  ifndef _M_CEE_PURE
151   _CRTDATA(extern unsigned short *_pctype);
152 #  else
153 #   define _pctype (__pctype_func())
154 #  endif /* !_M_CEE_PURE */
155 # endif /* !_CTYPE_DISABLE_MACROS */
156 #endif /* !_CRT_CTYPEDATA_DEFINED */
157 
158 #ifndef _CRT_WCTYPEDATA_DEFINED
159 #define _CRT_WCTYPEDATA_DEFINED
160 # ifndef _CTYPE_DISABLE_MACROS
161   _CRTDATA(extern unsigned short *_wctype);
162   _CRTIMP const wctype_t * __cdecl __pwctype_func(void);
163 #  ifndef _M_CEE_PURE
164   _CRTDATA(extern const wctype_t *_pwctype);
165 #  else
166 #   define _pwctype (__pwctype_func())
167 #  endif /* !_M_CEE_PURE */
168 # endif /* !_CTYPE_DISABLE_MACROS */
169 #endif /* !_CRT_WCTYPEDATA_DEFINED */
170 
171 #define _UPPER 0x1
172 #define _LOWER 0x2
173 #define _DIGIT 0x4
174 #define _SPACE 0x8
175 
176 #define _PUNCT 0x10
177 #define _CONTROL 0x20
178 #define _BLANK 0x40
179 #define _HEX 0x80
180 
181 #define _LEADBYTE 0x8000
182 #define _ALPHA (0x0100|_UPPER|_LOWER)
183 
184 #ifndef _WCTYPE_DEFINED
185 #define _WCTYPE_DEFINED
186   _Check_return_ _CRTIMP int __cdecl iswalpha(_In_ wint_t _C);
187   _Check_return_ _CRTIMP int __cdecl _iswalpha_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
188   _Check_return_ _CRTIMP int __cdecl iswupper(_In_ wint_t _C);
189   _Check_return_ _CRTIMP int __cdecl _iswupper_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
190   _Check_return_ _CRTIMP int __cdecl iswlower(_In_ wint_t _C);
191   _Check_return_ _CRTIMP int __cdecl _iswlower_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
192   _Check_return_ _CRTIMP int __cdecl iswdigit(_In_ wint_t _C);
193   _Check_return_ _CRTIMP int __cdecl _iswdigit_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
194   _Check_return_ _CRTIMP int __cdecl iswxdigit(_In_ wint_t _C);
195   _Check_return_ _CRTIMP int __cdecl _iswxdigit_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
196   _Check_return_ _CRTIMP int __cdecl iswspace(_In_ wint_t _C);
197   _Check_return_ _CRTIMP int __cdecl _iswspace_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
198   _Check_return_ _CRTIMP int __cdecl iswpunct(_In_ wint_t _C);
199   _Check_return_ _CRTIMP int __cdecl _iswpunct_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
200   _Check_return_ _CRTIMP int __cdecl iswalnum(_In_ wint_t _C);
201   _Check_return_ _CRTIMP int __cdecl _iswalnum_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
202   _Check_return_ _CRTIMP int __cdecl iswprint(_In_ wint_t _C);
203   _Check_return_ _CRTIMP int __cdecl _iswprint_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
204   _Check_return_ _CRTIMP int __cdecl iswgraph(_In_ wint_t _C);
205   _Check_return_ _CRTIMP int __cdecl _iswgraph_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
206   _Check_return_ _CRTIMP int __cdecl iswcntrl(_In_ wint_t _C);
207   _Check_return_ _CRTIMP int __cdecl _iswcntrl_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
208   _Check_return_ _CRTIMP int __cdecl iswascii(_In_ wint_t _C);
209   _Check_return_ _CRTIMP int __cdecl isleadbyte(_In_ int _C);
210   _Check_return_ _CRTIMP int __cdecl _isleadbyte_l(_In_ int _C, _In_opt_ _locale_t _Locale);
211   _Check_return_ _CRTIMP wint_t __cdecl towupper(_In_ wint_t _C);
212   _Check_return_ _CRTIMP wint_t __cdecl _towupper_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
213   _Check_return_ _CRTIMP wint_t __cdecl towlower(_In_ wint_t _C);
214   _Check_return_ _CRTIMP wint_t __cdecl _towlower_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
215   _Check_return_ _CRTIMP int __cdecl iswctype(_In_ wint_t _C, _In_ wctype_t _Type);
216   _Check_return_ _CRTIMP int __cdecl _iswctype_l(_In_ wint_t _C, _In_ wctype_t _Type, _In_opt_ _locale_t _Locale);
217   _Check_return_ _CRTIMP int __cdecl __iswcsymf(_In_ wint_t _C);
218   _Check_return_ _CRTIMP int __cdecl _iswcsymf_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
219   _Check_return_ _CRTIMP int __cdecl __iswcsym(_In_ wint_t _C);
220   _Check_return_ _CRTIMP int __cdecl _iswcsym_l(_In_ wint_t _C, _In_opt_ _locale_t _Locale);
221   _CRTIMP int __cdecl is_wctype(_In_ wint_t _C, _In_ wctype_t _Type);
222 
223 #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || !defined (NO_OLDNAMES)
224 _CRTIMP int __cdecl iswblank(wint_t _C);
225 #endif
226 #endif
227 
228 #ifndef _WDIRECT_DEFINED
229 #define _WDIRECT_DEFINED
230 
231   _Check_return_
232   _Ret_opt_z_
233   _CRTIMP
234   wchar_t*
235   __cdecl
236   _wgetcwd(
237     _Out_writes_opt_(_SizeInWords) wchar_t *_DstBuf,
238     _In_ int _SizeInWords);
239 
240   _Check_return_
241   _Ret_opt_z_
242   _CRTIMP
243   wchar_t*
244   __cdecl
245   _wgetdcwd(
246     _In_ int _Drive,
247     _Out_writes_opt_(_SizeInWords) wchar_t *_DstBuf,
248     _In_ int _SizeInWords);
249 
250   _Check_return_
251   _Ret_opt_z_
252   wchar_t*
253   __cdecl
254   _wgetdcwd_nolock(
255     _In_ int _Drive,
256     _Out_writes_opt_(_SizeInWords) wchar_t *_DstBuf,
257     _In_ int _SizeInWords);
258 
259   _Check_return_
260   _CRTIMP
261   int
262   __cdecl
263   _wchdir(
264     _In_z_ const wchar_t *_Path);
265 
266   _Check_return_
267   _CRTIMP
268   int
269   __cdecl
270   _wmkdir(
271     _In_z_ const wchar_t *_Path);
272 
273   _Check_return_
274   _CRTIMP
275   int
276   __cdecl
277   _wrmdir(
278     _In_z_ const wchar_t *_Path);
279 
280 #endif /* _WDIRECT_DEFINED */
281 
282 #ifndef _WIO_DEFINED
283 #define _WIO_DEFINED
284 
285   _Check_return_
286   _CRTIMP
287   int
288   __cdecl
289   _waccess(
290     _In_z_ const wchar_t *_Filename,
291     _In_ int _AccessMode);
292 
293   _Check_return_
294   _CRTIMP
295   int
296   __cdecl
297   _wchmod(
298     _In_z_ const wchar_t *_Filename,
299     _In_ int _Mode);
300 
301   _Check_return_
302   _CRTIMP
303   int
304   __cdecl
305   _wcreat(
306     _In_z_ const wchar_t *_Filename,
307     _In_ int _PermissionMode);
308 
309   _Check_return_
310   _CRTIMP
311   intptr_t
312   __cdecl
313   _wfindfirst32(
314     _In_z_ const wchar_t *_Filename,
315     _Out_ struct _wfinddata32_t *_FindData);
316 
317   _Check_return_
318   _CRTIMP
319   int
320   __cdecl
321   _wfindnext32(
322     _In_ intptr_t _FindHandle,
323     _Out_ struct _wfinddata32_t *_FindData);
324 
325   _Check_return_
326   _CRTIMP
327   int
328   __cdecl
329   _wunlink(
330     _In_z_ const wchar_t *_Filename);
331 
332   _Check_return_
333   _CRTIMP
334   int
335   __cdecl
336   _wrename(
337     _In_z_ const wchar_t *_OldFilename,
338     _In_z_ const wchar_t *_NewFilename);
339 
340   _CRTIMP
341   wchar_t*
342   __cdecl
343   _wmktemp(
344     _Inout_z_ wchar_t *_TemplateName);
345 
346 #if _INTEGRAL_MAX_BITS >= 64
347 
348   _Check_return_
349   _CRTIMP
350   intptr_t
351   __cdecl
352   _wfindfirst32i64(
353     _In_z_ const wchar_t *_Filename,
354     _Out_ struct _wfinddata32i64_t *_FindData);
355 
356   _Check_return_
357   _CRTIMP
358   intptr_t
359   __cdecl
360   _wfindfirst64i32(
361     _In_z_ const wchar_t *_Filename,
362     _Out_ struct _wfinddata64i32_t *_FindData);
363 
364   _Check_return_
365   _CRTIMP
366   intptr_t
367   __cdecl
368   _wfindfirst64(
369     _In_z_ const wchar_t *_Filename,
370     _Out_ struct _wfinddata64_t *_FindData);
371 
372   _Check_return_
373   _CRTIMP
374   int
375   __cdecl
376   _wfindnext32i64(
377     _In_ intptr_t _FindHandle,
378     _Out_ struct _wfinddata32i64_t *_FindData);
379 
380   _Check_return_
381   _CRTIMP
382   int
383   __cdecl
384   _wfindnext64i32(
385     _In_ intptr_t _FindHandle,
386     _Out_ struct _wfinddata64i32_t *_FindData);
387 
388   _Check_return_
389   _CRTIMP
390   int
391   __cdecl
392   _wfindnext64(
393     _In_ intptr_t _FindHandle,
394     _Out_ struct _wfinddata64_t *_FindData);
395 
396 #endif /* _INTEGRAL_MAX_BITS >= 64 */
397 
398   _Check_return_wat_
399   _CRTIMP
400   errno_t
401   __cdecl
402   _wsopen_s(
403     _Out_ int *_FileHandle,
404     _In_z_ const wchar_t *_Filename,
405     _In_ int _OpenFlag,
406     _In_ int _ShareFlag,
407     _In_ int _PermissionFlag);
408 
409 #if !defined(__cplusplus) || !(defined(_X86_) && !defined(__x86_64))
410   _CRTIMP int __cdecl _wopen(const wchar_t *_Filename,int _OpenFlag,...);
411   _CRTIMP int __cdecl _wsopen(const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,...);
412 #else
413   extern "C++" _CRTIMP int __cdecl _wopen(const wchar_t *_Filename,int _OpenFlag,int _PermissionMode = 0);
414   extern "C++" _CRTIMP int __cdecl _wsopen(const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionMode = 0);
415 #endif
416 
417 #endif /* !_WIO_DEFINED */
418 
419 #ifndef _WLOCALE_DEFINED
420 #define _WLOCALE_DEFINED
421   _Check_return_opt_
422   _CRTIMP
423   wchar_t*
424   __cdecl
425   _wsetlocale(
426     _In_ int _Category,
427     _In_opt_z_ const wchar_t *_Locale);
428 #endif
429 
430 #ifndef _WPROCESS_DEFINED
431 #define _WPROCESS_DEFINED
432 
433   _CRTIMP
434   intptr_t
435   __cdecl
436   _wexecl(
437     _In_z_ const wchar_t *_Filename,
438     _In_z_ const wchar_t *_ArgList,
439     ...);
440 
441   _CRTIMP
442   intptr_t
443   __cdecl
444   _wexecle(
445     _In_z_ const wchar_t *_Filename,
446     _In_z_ const wchar_t *_ArgList,
447     ...);
448 
449   _CRTIMP
450   intptr_t
451   __cdecl
452   _wexeclp(
453     _In_z_ const wchar_t *_Filename,
454     _In_z_ const wchar_t *_ArgList,
455     ...);
456 
457   _CRTIMP
458   intptr_t
459   __cdecl
460   _wexeclpe(
461     _In_z_ const wchar_t *_Filename,
462     _In_z_ const wchar_t *_ArgList,
463     ...);
464 
465   _CRTIMP
466   intptr_t
467   __cdecl
468   _wexecv(
469     _In_z_ const wchar_t *_Filename,
470     _In_z_ const wchar_t *const *_ArgList);
471 
472   _CRTIMP
473   intptr_t
474   __cdecl
475   _wexecve(
476     _In_z_ const wchar_t *_Filename,
477     _In_z_ const wchar_t *const *_ArgList,
478     _In_opt_z_ const wchar_t *const *_Env);
479 
480   _CRTIMP
481   intptr_t
482   __cdecl
483   _wexecvp(
484     _In_z_ const wchar_t *_Filename,
485     _In_z_ const wchar_t *const *_ArgList);
486 
487   _CRTIMP
488   intptr_t
489   __cdecl
490   _wexecvpe(
491     _In_z_ const wchar_t *_Filename,
492     _In_z_ const wchar_t *const *_ArgList,
493     _In_opt_z_ const wchar_t *const *_Env);
494 
495   _CRTIMP
496   intptr_t
497   __cdecl
498   _wspawnl(
499     _In_ int _Mode,
500     _In_z_ const wchar_t *_Filename,
501     _In_z_ const wchar_t *_ArgList,
502     ...);
503 
504   _CRTIMP
505   intptr_t
506   __cdecl
507   _wspawnle(
508     _In_ int _Mode,
509     _In_z_ const wchar_t *_Filename,
510     _In_z_ const wchar_t *_ArgList,
511     ...);
512 
513   _CRTIMP
514   intptr_t
515   __cdecl
516   _wspawnlp(
517     _In_ int _Mode,
518     _In_z_ const wchar_t *_Filename,
519     _In_z_ const wchar_t *_ArgList,
520     ...);
521 
522   _CRTIMP
523   intptr_t
524   __cdecl
525   _wspawnlpe(
526     _In_ int _Mode,
527     _In_z_ const wchar_t *_Filename,
528     _In_z_ const wchar_t *_ArgList,
529     ...);
530 
531   _CRTIMP
532   intptr_t
533   __cdecl
534   _wspawnv(
535     _In_ int _Mode,
536     _In_z_ const wchar_t *_Filename,
537     _In_z_ const wchar_t *const *_ArgList);
538 
539   _CRTIMP
540   intptr_t
541   __cdecl
542   _wspawnve(
543     _In_ int _Mode,
544     _In_z_ const wchar_t *_Filename,
545     _In_z_ const wchar_t *const *_ArgList,
546     _In_opt_z_ const wchar_t *const *_Env);
547 
548   _CRTIMP
549   intptr_t
550   __cdecl
551   _wspawnvp(
552     _In_ int _Mode,
553     _In_z_ const wchar_t *_Filename,
554     _In_z_ const wchar_t *const *_ArgList);
555 
556   _CRTIMP
557   intptr_t
558   __cdecl
559   _wspawnvpe(
560     _In_ int _Mode,
561     _In_z_ const wchar_t *_Filename,
562     _In_z_ const wchar_t *const *_ArgList,
563     _In_opt_z_ const wchar_t *const *_Env);
564 
565 #ifndef _CRT_WSYSTEM_DEFINED
566 #define _CRT_WSYSTEM_DEFINED
567   _CRTIMP
568   int
569   __cdecl
570   _wsystem(
571     _In_opt_z_ const wchar_t *_Command);
572 #endif /* !_CRT_WSYSTEM_DEFINED */
573 
574 #endif /* !_WPROCESS_DEFINED */
575 
576 #ifndef _WCTYPE_INLINE_DEFINED
577 #undef _CRT_WCTYPE_NOINLINE
578 #if !defined(__cplusplus) || defined(_CRT_WCTYPE_NOINLINE)
579 #define iswalpha(_c) (iswctype(_c,_ALPHA))
580 #define iswupper(_c) (iswctype(_c,_UPPER))
581 #define iswlower(_c) (iswctype(_c,_LOWER))
582 #define iswdigit(_c) (iswctype(_c,_DIGIT))
583 #define iswxdigit(_c) (iswctype(_c,_HEX))
584 #define iswspace(_c) (iswctype(_c,_SPACE))
585 #define iswpunct(_c) (iswctype(_c,_PUNCT))
586 #define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
587 #define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
588 #define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
589 #define iswcntrl(_c) (iswctype(_c,_CONTROL))
590 #define iswascii(_c) ((unsigned)(_c) < 0x80)
591 
592 #define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p))
593 #define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p))
594 #define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p))
595 #define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p))
596 #define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p))
597 #define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p))
598 #define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p))
599 #define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p))
600 #define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p))
601 #define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p))
602 #define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p))
603 #ifndef _CTYPE_DISABLE_MACROS
604 #define isleadbyte(_c) (__PCTYPE_FUNC[(unsigned char)(_c)] & _LEADBYTE)
605 #endif
606 #endif
607 #define _WCTYPE_INLINE_DEFINED
608 #endif
609 
610 #if !defined(_POSIX_) || defined(__GNUC__)
611 #ifndef _INO_T_DEFINED
612 #define _INO_T_DEFINED
613   typedef unsigned short _ino_t;
614 #ifndef NO_OLDNAMES
615   typedef unsigned short ino_t;
616 #endif
617 #endif
618 
619 #ifndef _DEV_T_DEFINED
620 #define _DEV_T_DEFINED
621   typedef unsigned int _dev_t;
622 #ifndef NO_OLDNAMES
623   typedef unsigned int dev_t;
624 #endif
625 #endif
626 
627 #ifndef _OFF_T_DEFINED
628 #define _OFF_T_DEFINED
629   typedef long _off_t;
630 #ifndef NO_OLDNAMES
631   typedef long off_t;
632 #endif
633 #endif
634 
635 #ifndef _OFF64_T_DEFINED
636 #define _OFF64_T_DEFINED
637   __MINGW_EXTENSION typedef long long _off64_t;
638 #ifndef NO_OLDNAMES
639   __MINGW_EXTENSION typedef long long off64_t;
640 #endif
641 #endif
642 
643 #ifndef _STAT_DEFINED
644 #define _STAT_DEFINED
645 
646   struct _stat32 {
647     _dev_t st_dev;
648     _ino_t st_ino;
649     unsigned short st_mode;
650     short st_nlink;
651     short st_uid;
652     short st_gid;
653     _dev_t st_rdev;
654     _off_t st_size;
655     __time32_t st_atime;
656     __time32_t st_mtime;
657     __time32_t st_ctime;
658   };
659 
660   struct _stat {
661     _dev_t st_dev;
662     _ino_t st_ino;
663     unsigned short st_mode;
664     short st_nlink;
665     short st_uid;
666     short st_gid;
667     _dev_t st_rdev;
668     _off_t st_size;
669     time_t st_atime;
670     time_t st_mtime;
671     time_t st_ctime;
672   };
673 
674 #ifndef	NO_OLDNAMES
675   struct stat {
676     _dev_t st_dev;
677     _ino_t st_ino;
678     unsigned short st_mode;
679     short st_nlink;
680     short st_uid;
681     short st_gid;
682     _dev_t st_rdev;
683     _off_t st_size;
684     time_t st_atime;
685     time_t st_mtime;
686     time_t st_ctime;
687   };
688 #endif
689 
690 #if _INTEGRAL_MAX_BITS >= 64
691 
692   struct _stat32i64 {
693     _dev_t st_dev;
694     _ino_t st_ino;
695     unsigned short st_mode;
696     short st_nlink;
697     short st_uid;
698     short st_gid;
699     _dev_t st_rdev;
700     __MINGW_EXTENSION __int64 st_size;
701     __time32_t st_atime;
702     __time32_t st_mtime;
703     __time32_t st_ctime;
704   };
705 
706   struct _stat64i32 {
707     _dev_t st_dev;
708     _ino_t st_ino;
709     unsigned short st_mode;
710     short st_nlink;
711     short st_uid;
712     short st_gid;
713     _dev_t st_rdev;
714     _off_t st_size;
715     __time64_t st_atime;
716     __time64_t st_mtime;
717     __time64_t st_ctime;
718   };
719 
720   struct _stat64 {
721     _dev_t st_dev;
722     _ino_t st_ino;
723     unsigned short st_mode;
724     short st_nlink;
725     short st_uid;
726     short st_gid;
727     _dev_t st_rdev;
728     __MINGW_EXTENSION __int64 st_size;
729     __time64_t st_atime;
730     __time64_t st_mtime;
731     __time64_t st_ctime;
732   };
733 #endif
734 
735 #define __stat64 _stat64
736 
737 #endif
738 
739 #ifndef _WSTAT_DEFINED
740 #define _WSTAT_DEFINED
741 
742   _CRTIMP
743   int
744   __cdecl
745   _wstat(
746     _In_z_ const wchar_t *_Name,
747     _Out_ struct _stat *_Stat);
748 
749   _CRTIMP
750   int
751   __cdecl
752   _wstat32(
753     _In_z_ const wchar_t *_Name,
754     _Out_ struct _stat32 *_Stat);
755 
756 #if _INTEGRAL_MAX_BITS >= 64
757 
758   _CRTIMP
759   int
760   __cdecl
761   _wstat32i64(
762     _In_z_ const wchar_t *_Name,
763     _Out_ struct _stat32i64 *_Stat);
764 
765   _CRTIMP
766   int
767   __cdecl
768   _wstat64i32(
769     _In_z_ const wchar_t *_Name,
770     _Out_ struct _stat64i32 *_Stat);
771 
772   _CRTIMP
773   int
774   __cdecl
775   _wstat64(
776     _In_z_ const wchar_t *_Name,
777     _Out_ struct _stat64 *_Stat);
778 
779 #endif /* _INTEGRAL_MAX_BITS >= 64 */
780 
781 #endif /* _WSTAT_DEFINED */
782 
783 #endif /* !defined(_POSIX_) || defined(__GNUC__) */
784 
785 #ifndef _WCONIO_DEFINED
786 #define _WCONIO_DEFINED
787 
788   _CRTIMP
789   wchar_t*
790   _cgetws(
791     _Inout_z_ wchar_t *_Buffer);
792 
793   _Check_return_
794   _CRTIMP
795   wint_t
796   __cdecl
797   _getwch(void);
798 
799   _Check_return_
800   _CRTIMP
801   wint_t
802   __cdecl
803   _getwche(void);
804 
805   _Check_return_
806   _CRTIMP
807   wint_t
808   __cdecl
809   _putwch(
810     wchar_t _WCh);
811 
812   _Check_return_
813   _CRTIMP
814   wint_t
815   __cdecl
816   _ungetwch(
817     wint_t _WCh);
818 
819   _Check_return_opt_
820   _CRTIMP
821   int
822   __cdecl
823   _cputws(
824     _In_z_ const wchar_t *_String);
825 
826   _Check_return_opt_
827   _CRTIMP
828   int
829   __cdecl
830   _cwprintf(
831     _In_z_ _Printf_format_string_ const wchar_t *_Format,
832     ...);
833 
834   _Check_return_opt_
835   _CRTIMP
836   int
837   __cdecl
838   _cwscanf(
839     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
840     ...);
841 
842   _Check_return_opt_
843   _CRTIMP
844   int
845   __cdecl
846   _cwscanf_l(
847     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
848     _In_opt_ _locale_t _Locale,
849     ...);
850 
851   _Check_return_opt_
852   _CRTIMP
853   int
854   __cdecl
855   _vcwprintf(
856     _In_z_ _Printf_format_string_ const wchar_t *_Format,
857     va_list _ArgList);
858 
859   _Check_return_opt_
860   _CRTIMP
861   int
862   __cdecl
863   _cwprintf_p(
864     _In_z_ _Printf_format_string_ const wchar_t *_Format,
865     ...);
866 
867   _Check_return_opt_
868   _CRTIMP
869   int
870   __cdecl
871   _vcwprintf_p(
872     _In_z_ _Printf_format_string_ const wchar_t *_Format,
873     va_list _ArgList);
874 
875   _CRTIMP
876   int
877   __cdecl
878   _cwprintf_l(
879     _In_z_ _Printf_format_string_ const wchar_t *_Format,
880     _In_opt_ _locale_t _Locale,
881     ...);
882 
883   _CRTIMP
884   int
885   __cdecl
886   _vcwprintf_l(
887     _In_z_ _Printf_format_string_ const wchar_t *_Format,
888     _In_opt_ _locale_t _Locale,
889     va_list _ArgList);
890 
891   _CRTIMP
892   int
893   __cdecl
894   _cwprintf_p_l(
895     _In_z_ _Printf_format_string_ const wchar_t *_Format,
896     _In_opt_ _locale_t _Locale,
897     ...);
898 
899   _CRTIMP
900   int
901   __cdecl
902   _vcwprintf_p_l(
903     _In_z_ _Printf_format_string_ const wchar_t *_Format,
904     _In_opt_ _locale_t _Locale,
905     va_list _ArgList);
906 
907   _Check_return_opt_
908   wint_t
909   __cdecl
910   _putwch_nolock(
911     wchar_t _WCh);
912 
913   _Check_return_
914   wint_t
915   __cdecl
916   _getwch_nolock(void);
917 
918   _Check_return_
919   wint_t
920   __cdecl
921   _getwche_nolock(void);
922 
923   _Check_return_opt_
924   wint_t
925   __cdecl
926   _ungetwch_nolock(
927     wint_t _WCh);
928 
929 #endif /* _WCONIO_DEFINED */
930 
931 #ifndef _WSTDIO_DEFINED
932 #define _WSTDIO_DEFINED
933 
934 #ifdef _POSIX_
935   _CRTIMP FILE *__cdecl _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode);
936 #else
937   _Check_return_
938   _CRTIMP
939   FILE*
940   __cdecl
941   _wfsopen(
942     _In_z_ const wchar_t *_Filename,
943     _In_z_ const wchar_t *_Mode,
944     _In_ int _ShFlag);
945 #endif
946 
947   _Check_return_opt_
948   _CRTIMP_ALT
949   wint_t
950   __cdecl
951   fgetwc(
952     _Inout_ FILE *_File);
953 
954   _Check_return_opt_
955   _CRTIMP
956   wint_t
957   __cdecl
958   _fgetwchar(void);
959 
960   _Check_return_opt_
961   _CRTIMP
962   wint_t
963   __cdecl
964   fputwc(
965     _In_ wchar_t _Ch,
966     _Inout_ FILE *_File);
967 
968   _Check_return_opt_
969   _CRTIMP
970   wint_t
971   __cdecl
972   _fputwchar(
973     _In_ wchar_t _Ch);
974 
975   _Check_return_
976   _CRTIMP
977   wint_t
978   __cdecl
979   getwc(
980     _Inout_ FILE *_File);
981 
982   _Check_return_
983   _CRTIMP
984   wint_t
985   __cdecl
986   getwchar(void);
987 
988   _Check_return_opt_
989   _CRTIMP
990   wint_t
991   __cdecl
992   putwc(
993     _In_ wchar_t _Ch,
994     _Inout_ FILE *_File);
995 
996   _Check_return_opt_
997   _CRTIMP
998   wint_t
999   __cdecl
1000   putwchar(
1001     _In_ wchar_t _Ch);
1002 
1003   _Check_return_opt_
1004   _CRTIMP_ALT
1005   wint_t
1006   __cdecl
1007   ungetwc(
1008     _In_ wint_t _Ch,
1009     _Inout_ FILE *_File);
1010 
1011   _Check_return_opt_
1012   _CRTIMP
1013   wchar_t*
1014   __cdecl
1015   fgetws(
1016     _Out_writes_z_(_SizeInWords) wchar_t *_Dst,
1017     _In_ int _SizeInWords,
1018     _Inout_ FILE *_File);
1019 
1020   _Check_return_opt_
1021   _CRTIMP
1022   int
1023   __cdecl
1024   fputws(
1025     _In_z_ const wchar_t *_Str,
1026     _Inout_ FILE *_File);
1027 
1028   _CRTIMP
1029   wchar_t*
1030   __cdecl
1031   _getws(
1032     _Pre_notnull_ _Post_z_ wchar_t *_String);
1033 
1034   _Check_return_opt_
1035   _CRTIMP
1036   int
1037   __cdecl
1038   _putws(
1039     _In_z_ const wchar_t *_Str);
1040 
1041   _Check_return_opt_
1042   _CRTIMP
1043   int
1044   __cdecl
1045   fwprintf(
1046     _Inout_ FILE *_File,
1047     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1048     ...);
1049 
1050   _Check_return_opt_
1051   _CRTIMP
1052   int
1053   __cdecl
1054   wprintf(
1055     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1056     ...);
1057 
1058   _Check_return_
1059   _CRTIMP
1060   int
1061   __cdecl
1062   _scwprintf(
1063     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1064     ...);
1065 
1066   _Check_return_opt_
1067   _CRTIMP
1068   int
1069   __cdecl
1070   vfwprintf(
1071     _Inout_ FILE *_File,
1072     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1073     va_list _ArgList);
1074 
1075   _Check_return_opt_
1076   _CRTIMP
1077   int
1078   __cdecl
1079   vwprintf(
1080     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1081     va_list _ArgList);
1082 
1083   _CRTIMP
1084   int
1085   __cdecl
1086   swprintf(
1087     _Out_ wchar_t*,
1088     const wchar_t*,
1089     ...);
1090 
1091   _CRTIMP
1092   int
1093   __cdecl
1094   vswprintf(
1095     _Out_ wchar_t*,
1096     const wchar_t*,
1097     va_list);
1098 
1099   _Check_return_opt_
1100   _CRTIMP
1101   int
1102   __cdecl
1103   _swprintf_c(
1104     _Out_writes_z_(_SizeInWords) wchar_t *_DstBuf,
1105     _In_ size_t _SizeInWords,
1106     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1107     ...);
1108 
1109   _Check_return_opt_
1110   _CRTIMP
1111   int
1112   __cdecl
1113   _vswprintf_c(
1114     _Out_writes_z_(_SizeInWords) wchar_t *_DstBuf,
1115     _In_ size_t _SizeInWords,
1116     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1117     va_list _ArgList);
1118 
1119   _CRTIMP int __cdecl _snwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,...);
1120   _CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest,size_t _Count,const wchar_t *_Format,va_list _Args);
1121 
1122 #ifndef __NO_ISOCEXT  /* externs in libmingwex.a */
1123   _CRTIMP int __cdecl snwprintf (wchar_t *s, size_t n, const wchar_t * format, ...);
1124   __CRT_INLINE int __cdecl vsnwprintf (wchar_t *s, size_t n, const wchar_t *format, va_list arg) { return _vsnwprintf(s,n,format,arg); }
1125   _CRTIMP int __cdecl vwscanf (const wchar_t *, va_list);
1126   _CRTIMP int __cdecl vfwscanf (FILE *,const wchar_t *,va_list);
1127   _CRTIMP int __cdecl vswscanf (const wchar_t *,const wchar_t *,va_list);
1128 #endif
1129 
1130   _Check_return_opt_
1131   _CRTIMP
1132   int
1133   __cdecl
1134   _fwprintf_p(
1135     _Inout_ FILE *_File,
1136     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1137     ...);
1138 
1139   _Check_return_opt_
1140   _CRTIMP
1141   int
1142   __cdecl
1143   _wprintf_p(
1144     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1145     ...);
1146 
1147   _Check_return_opt_
1148   _CRTIMP
1149   int
1150   __cdecl
1151   _vfwprintf_p(
1152     _Inout_ FILE *_File,
1153     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1154     va_list _ArgList);
1155 
1156   _Check_return_opt_
1157   _CRTIMP
1158   int
1159   __cdecl
1160   _vwprintf_p(
1161     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1162     va_list _ArgList);
1163 
1164   _Check_return_opt_
1165   _CRTIMP
1166   int
1167   __cdecl
1168   _swprintf_p(
1169     _Out_writes_z_(_MaxCount) wchar_t *_DstBuf,
1170     _In_ size_t _MaxCount,
1171     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1172     ...);
1173 
1174   _Check_return_opt_
1175   _CRTIMP
1176   int
1177   __cdecl
1178   _vswprintf_p(
1179     _Out_writes_z_(_MaxCount) wchar_t *_DstBuf,
1180     _In_ size_t _MaxCount,
1181     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1182     va_list _ArgList);
1183 
1184   _Check_return_
1185   _CRTIMP
1186   int
1187   __cdecl
1188   _scwprintf_p(
1189     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1190     ...);
1191 
1192   _Check_return_
1193   _CRTIMP
1194   int
1195   __cdecl
1196   _vscwprintf_p(
1197     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1198     va_list _ArgList);
1199 
1200   _Check_return_opt_
1201   _CRTIMP
1202   int
1203   __cdecl
1204   _wprintf_l(
1205     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1206     _In_opt_ _locale_t _Locale,
1207     ...);
1208 
1209   _Check_return_opt_
1210   _CRTIMP
1211   int
1212   __cdecl
1213   _wprintf_p_l(
1214     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1215     _In_opt_ _locale_t _Locale,
1216     ...);
1217 
1218   _Check_return_opt_
1219   _CRTIMP
1220   int
1221   __cdecl
1222   _vwprintf_l(
1223     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1224     _In_opt_ _locale_t _Locale,
1225     va_list _ArgList);
1226 
1227   _Check_return_opt_
1228   _CRTIMP
1229   int
1230   __cdecl
1231   _vwprintf_p_l(
1232     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1233     _In_opt_ _locale_t _Locale,
1234     va_list _ArgList);
1235 
1236   _Check_return_opt_
1237   _CRTIMP
1238   int
1239   __cdecl
1240   _fwprintf_l(
1241     _Inout_ FILE *_File,
1242     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1243     _In_opt_ _locale_t _Locale,
1244     ...);
1245 
1246   _Check_return_opt_
1247   _CRTIMP
1248   int
1249   __cdecl
1250   _fwprintf_p_l(
1251     _Inout_ FILE *_File,
1252     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1253     _In_opt_ _locale_t _Locale,
1254     ...);
1255 
1256   _Check_return_opt_
1257   _CRTIMP
1258   int
1259   __cdecl
1260   _vfwprintf_l(
1261     _Inout_ FILE *_File,
1262     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1263     _In_opt_ _locale_t _Locale,
1264     va_list _ArgList);
1265 
1266   _Check_return_opt_
1267   _CRTIMP
1268   int
1269   __cdecl
1270   _vfwprintf_p_l(
1271     _Inout_ FILE *_File,
1272     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1273     _In_opt_ _locale_t _Locale,
1274     va_list _ArgList);
1275 
1276   _Check_return_opt_
1277   _CRTIMP
1278   int
1279   __cdecl
1280   _swprintf_c_l(
1281     _Out_writes_z_(_MaxCount) wchar_t *_DstBuf,
1282     _In_ size_t _MaxCount,
1283     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1284     _In_opt_ _locale_t _Locale,
1285     ...);
1286 
1287   _Check_return_opt_
1288   _CRTIMP
1289   int
1290   __cdecl
1291   _swprintf_p_l(
1292     _Out_writes_z_(_MaxCount) wchar_t *_DstBuf,
1293     _In_ size_t _MaxCount,
1294     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1295     _In_opt_ _locale_t _Locale,
1296     ...);
1297 
1298   _Check_return_opt_
1299   _CRTIMP
1300   int
1301   __cdecl
1302   _vswprintf_c_l(
1303     _Out_writes_z_(_MaxCount) wchar_t *_DstBuf,
1304     _In_ size_t _MaxCount,
1305     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1306     _In_opt_ _locale_t _Locale,
1307     va_list _ArgList);
1308 
1309   _Check_return_opt_
1310   _CRTIMP
1311   int
1312   __cdecl
1313   _vswprintf_p_l(
1314     _Out_writes_z_(_MaxCount) wchar_t *_DstBuf,
1315     _In_ size_t _MaxCount,
1316     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1317     _In_opt_ _locale_t _Locale,
1318     va_list _ArgList);
1319 
1320   _Check_return_
1321   _CRTIMP
1322   int
1323   __cdecl
1324   _scwprintf_l(
1325     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1326     _In_opt_ _locale_t _Locale,
1327     ...);
1328 
1329   _Check_return_
1330   _CRTIMP
1331   int
1332   __cdecl
1333   _scwprintf_p_l(
1334     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1335     _In_opt_ _locale_t _Locale,
1336     ...);
1337 
1338   _Check_return_
1339   _CRTIMP
1340   int
1341   __cdecl
1342   _vscwprintf_p_l(
1343     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1344     _In_opt_ _locale_t _Locale,
1345     va_list _ArgList);
1346 
1347   _Check_return_opt_
1348   _CRTIMP
1349   int
1350   __cdecl
1351   _snwprintf_l(
1352     _Out_writes_(_MaxCount) wchar_t *_DstBuf,
1353     _In_ size_t _MaxCount,
1354     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1355     _In_opt_ _locale_t _Locale,
1356     ...);
1357 
1358   _Check_return_opt_
1359   _CRTIMP
1360   int
1361   __cdecl
1362   _vsnwprintf_l(
1363     _Out_writes_(_MaxCount) wchar_t *_DstBuf,
1364     _In_ size_t _MaxCount,
1365     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1366     _In_opt_ _locale_t _Locale,
1367     va_list _ArgList);
1368 
1369   _CRTIMP
1370   int
1371   __cdecl
1372   _swprintf(
1373     _Pre_notnull_ _Post_z_ wchar_t *_Dest,
1374     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1375     ...);
1376 
1377   _CRTIMP
1378   int
1379   __cdecl
1380   _vswprintf(
1381     _Pre_notnull_ _Post_z_ wchar_t *_Dest,
1382     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1383     va_list _Args);
1384 
1385 
1386   _CRTIMP int __cdecl __swprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,...);
1387   _CRTIMP int __cdecl __vswprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,va_list _Args);
1388 
1389 #if 0 //this is for MSVCRT80 and higher, which we don't use nor implement
1390 #ifdef _CRT_NON_CONFORMING_SWPRINTFS
1391 #ifndef __cplusplus
1392 #define swprintf _swprintf
1393 #define vswprintf _vswprintf
1394 #define _swprintf_l __swprintf_l
1395 #define _vswprintf_l __vswprintf_l
1396 #endif
1397 #endif
1398 #endif
1399 
1400   _Check_return_
1401   _CRTIMP
1402   wchar_t*
1403   __cdecl
1404   _wtempnam(
1405     _In_opt_z_ const wchar_t *_Directory,
1406     _In_opt_z_ const wchar_t *_FilePrefix);
1407 
1408   _Check_return_
1409   _CRTIMP
1410   int
1411   __cdecl
1412   _vscwprintf(
1413     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1414     va_list _ArgList);
1415 
1416   _Check_return_
1417   _CRTIMP
1418   int
1419   __cdecl
1420   _vscwprintf_l(
1421     _In_z_ _Printf_format_string_ const wchar_t *_Format,
1422     _In_opt_ _locale_t _Locale,
1423     va_list _ArgList);
1424 
1425   _Check_return_
1426   int
1427   __cdecl
1428   fwscanf(
1429     _Inout_ FILE *_File,
1430     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1431     ...);
1432 
1433   _Check_return_opt_
1434   _CRTIMP
1435   int
1436   __cdecl
1437   _fwscanf_l(
1438     _Inout_ FILE *_File,
1439     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1440     _In_opt_ _locale_t _Locale,
1441     ...);
1442 
1443   _Check_return_
1444   int
1445   __cdecl
1446   swscanf(
1447     _In_z_ const wchar_t *_Src,
1448     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1449     ...);
1450 
1451   _Check_return_opt_
1452   _CRTIMP
1453   int
1454   __cdecl
1455   _swscanf_l(
1456     _In_z_ const wchar_t *_Src,
1457     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1458     _In_opt_ _locale_t _Locale,
1459     ...);
1460 
1461   _Check_return_opt_
1462   _CRTIMP
1463   int
1464   __cdecl
1465   _snwscanf(
1466     _In_reads_(_MaxCount) _Pre_z_ const wchar_t *_Src,
1467     _In_ size_t _MaxCount,
1468     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1469     ...);
1470 
1471   _Check_return_opt_
1472   _CRTIMP
1473   int
1474   __cdecl
1475   _snwscanf_l(
1476     _In_reads_(_MaxCount) _Pre_z_ const wchar_t *_Src,
1477     _In_ size_t _MaxCount,
1478     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1479     _In_opt_ _locale_t _Locale,
1480     ...);
1481 
1482   _Check_return_
1483   int
1484   __cdecl
1485   wscanf(
1486     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1487     ...);
1488 
1489   _Check_return_opt_
1490   _CRTIMP
1491   int
1492   __cdecl
1493   _wscanf_l(
1494     _In_z_ _Scanf_format_string_ const wchar_t *_Format,
1495     _In_opt_ _locale_t _Locale,
1496     ...);
1497 
1498   _Check_return_
1499   _CRTIMP
1500   FILE*
1501   __cdecl
1502   _wfdopen(
1503     _In_ int _FileHandle,
1504     _In_z_ const wchar_t *_Mode);
1505 
1506   _Check_return_
1507   _CRTIMP
1508   FILE*
1509   __cdecl
1510   _wfopen(
1511     _In_z_ const wchar_t *_Filename,
1512     _In_z_ const wchar_t *_Mode);
1513 
1514   _Check_return_
1515   _CRTIMP
1516   FILE*
1517   __cdecl
1518   _wfreopen(
1519     _In_z_ const wchar_t *_Filename,
1520     _In_z_ const wchar_t *_Mode,
1521     _Inout_ FILE *_OldFile);
1522 
1523 #ifndef _CRT_WPERROR_DEFINED
1524 #define _CRT_WPERROR_DEFINED
1525   _CRTIMP
1526   void
1527   __cdecl
1528   _wperror(
1529     _In_opt_z_ const wchar_t *_ErrMsg);
1530 #endif
1531 
1532   _Check_return_
1533   _CRTIMP
1534   FILE*
1535   __cdecl
1536   _wpopen(
1537     _In_z_ const wchar_t *_Command,
1538     _In_z_ const wchar_t *_Mode);
1539 
1540 #if !defined(NO_OLDNAMES) && !defined(wpopen)
1541 #define wpopen _wpopen
1542 #endif
1543 
1544   _Check_return_
1545   _CRTIMP
1546   int
1547   __cdecl
1548   _wremove(
1549     _In_z_ const wchar_t *_Filename);
1550 
1551   _CRTIMP
1552   wchar_t*
1553   __cdecl
1554   _wtmpnam(
1555     _Pre_maybenull_ _Post_z_ wchar_t *_Buffer);
1556 
1557   _Check_return_opt_
1558   _CRTIMP
1559   wint_t
1560   __cdecl
1561   _fgetwc_nolock(
1562     _Inout_ FILE *_File);
1563 
1564   _Check_return_opt_
1565   _CRTIMP
1566   wint_t
1567   __cdecl
1568   _fputwc_nolock(
1569     _In_ wchar_t _Ch,
1570     _Inout_ FILE *_File);
1571 
1572   _Check_return_opt_
1573   _CRTIMP
1574   wint_t
1575   __cdecl
1576   _ungetwc_nolock(
1577     _In_ wint_t _Ch,
1578     _Inout_ FILE *_File);
1579 
1580 #undef _CRT_GETPUTWCHAR_NOINLINE
1581 
1582 #if !defined(__cplusplus) || defined(_CRT_GETPUTWCHAR_NOINLINE)
1583 #define getwchar() fgetwc(stdin)
1584 #define putwchar(_c) fputwc((_c),stdout)
1585 #else
1586   _Check_return_ __CRT_INLINE wint_t __cdecl getwchar() {return (fgetwc(stdin)); }
1587   _Check_return_opt_ __CRT_INLINE wint_t __cdecl putwchar(_In_ wchar_t _C) {return (fputwc(_C,stdout)); }
1588 #endif
1589 
1590 #define getwc(_stm) fgetwc(_stm)
1591 #define putwc(_c,_stm) fputwc(_c,_stm)
1592 #define _putwc_nolock(_c,_stm) _fputwc_nolock(_c,_stm)
1593 #define _getwc_nolock(_c) _fgetwc_nolock(_c)
1594 
1595 #endif /* _WSTDIO_DEFINED */
1596 
1597 #ifndef _WSTDLIB_DEFINED
1598 #define _WSTDLIB_DEFINED
1599 
1600   _CRTIMP
1601   wchar_t*
1602   __cdecl
1603   _itow(
1604     _In_ int _Value,
1605     _Pre_notnull_ _Post_z_ wchar_t *_Dest,
1606     _In_ int _Radix);
1607 
1608   _CRTIMP
1609   wchar_t*
1610   __cdecl
1611   _ltow(
1612     _In_ long _Value,
1613     _Pre_notnull_ _Post_z_ wchar_t *_Dest,
1614     _In_ int _Radix);
1615 
1616   _CRTIMP
1617   wchar_t*
1618   __cdecl
1619   _ultow(
1620     _In_ unsigned long _Value,
1621     _Pre_notnull_ _Post_z_ wchar_t *_Dest,
1622     _In_ int _Radix);
1623 
1624   _Check_return_
1625   double
1626   __cdecl
1627   wcstod(
1628     _In_z_ const wchar_t *_Str,
1629     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr);
1630 
1631   _Check_return_
1632   _CRTIMP
1633   double
1634   __cdecl
1635   _wcstod_l(
1636     _In_z_ const wchar_t *_Str,
1637     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1638     _In_opt_ _locale_t _Locale);
1639 
1640   float __cdecl wcstof( const wchar_t *nptr, wchar_t **endptr);
1641 
1642 #if !defined __NO_ISOCEXT /* in libmingwex.a */
1643   float __cdecl wcstof (const wchar_t * __restrict__, wchar_t ** __restrict__);
1644   long double __cdecl wcstold (const wchar_t * __restrict__, wchar_t ** __restrict__);
1645 #endif /* __NO_ISOCEXT */
1646 
1647   _Check_return_
1648   long
1649   __cdecl
1650   wcstol(
1651     _In_z_ const wchar_t *_Str,
1652     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1653     _In_ int _Radix);
1654 
1655   _Check_return_
1656   _CRTIMP
1657   long
1658   __cdecl
1659   _wcstol_l(
1660     _In_z_ const wchar_t *_Str,
1661     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1662     _In_ int _Radix,
1663     _In_opt_ _locale_t _Locale);
1664 
1665   _Check_return_
1666   unsigned long
1667   __cdecl
1668   wcstoul(
1669     _In_z_ const wchar_t *_Str,
1670     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1671     _In_ int _Radix);
1672 
1673   _Check_return_
1674   _CRTIMP
1675   unsigned long
1676   __cdecl
1677   _wcstoul_l(
1678     _In_z_ const wchar_t *_Str,
1679     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1680     _In_ int _Radix,
1681     _In_opt_ _locale_t _Locale);
1682 
1683   _Check_return_
1684   _CRTIMP
1685   wchar_t*
1686   __cdecl
1687   _wgetenv(
1688     _In_z_ const wchar_t *_VarName);
1689 
1690 #ifndef _CRT_WSYSTEM_DEFINED
1691 #define _CRT_WSYSTEM_DEFINED
1692   _CRTIMP
1693   int
1694   __cdecl
1695   _wsystem(
1696     _In_opt_z_ const wchar_t *_Command);
1697 #endif
1698 
1699   _Check_return_
1700   _CRTIMP
1701   double
1702   __cdecl
1703   _wtof(
1704     _In_z_ const wchar_t *_Str);
1705 
1706   _Check_return_
1707   _CRTIMP
1708   double
1709   __cdecl
1710   _wtof_l(
1711     _In_z_ const wchar_t *_Str,
1712     _In_opt_ _locale_t _Locale);
1713 
1714   _Check_return_
1715   _CRTIMP
1716   int
1717   __cdecl
1718   _wtoi(
1719     _In_z_ const wchar_t *_Str);
1720 
1721   _Check_return_
1722   _CRTIMP
1723   int
1724   __cdecl
1725   _wtoi_l(
1726     _In_z_ const wchar_t *_Str,
1727     _In_opt_ _locale_t _Locale);
1728 
1729   _Check_return_
1730   _CRTIMP
1731   long
1732   __cdecl
1733   _wtol(
1734     _In_z_ const wchar_t *_Str);
1735 
1736   _Check_return_
1737   _CRTIMP
1738   long
1739   __cdecl
1740   _wtol_l(
1741     _In_z_ const wchar_t *_Str,
1742     _In_opt_ _locale_t _Locale);
1743 
1744 #if _INTEGRAL_MAX_BITS >= 64
1745 
1746   __MINGW_EXTENSION
1747   _CRTIMP
1748   wchar_t*
1749   __cdecl
1750   _i64tow(
1751     _In_ __int64 _Val,
1752     _Pre_notnull_ _Post_z_ wchar_t *_DstBuf,
1753     _In_ int _Radix);
1754 
1755   __MINGW_EXTENSION
1756   _CRTIMP
1757   wchar_t*
1758   __cdecl
1759   _ui64tow(
1760     _In_ unsigned __int64 _Val,
1761     _Pre_notnull_ _Post_z_ wchar_t *_DstBuf,
1762     _In_ int _Radix);
1763 
1764   _Check_return_
1765   __MINGW_EXTENSION
1766   _CRTIMP
1767   __int64
1768   __cdecl
1769   _wtoi64(
1770     _In_z_ const wchar_t *_Str);
1771 
1772   _Check_return_
1773   __MINGW_EXTENSION
1774   _CRTIMP
1775   __int64
1776   __cdecl
1777   _wtoi64_l(
1778     _In_z_ const wchar_t *_Str,
1779     _In_opt_ _locale_t _Locale);
1780 
1781   _Check_return_
1782   __MINGW_EXTENSION
1783   _CRTIMP
1784   __int64
1785   __cdecl
1786   _wcstoi64(
1787     _In_z_ const wchar_t *_Str,
1788     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1789     _In_ int _Radix);
1790 
1791   _Check_return_
1792   __MINGW_EXTENSION
1793   _CRTIMP
1794   __int64
1795   __cdecl
1796   _wcstoi64_l(
1797     _In_z_ const wchar_t *_Str,
1798     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1799     _In_ int _Radix,
1800     _In_opt_ _locale_t _Locale);
1801 
1802   _Check_return_
1803   __MINGW_EXTENSION
1804   _CRTIMP
1805   unsigned __int64
1806   __cdecl
1807   _wcstoui64(
1808     _In_z_ const wchar_t *_Str,
1809     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1810     _In_ int _Radix);
1811 
1812   _Check_return_
1813   __MINGW_EXTENSION
1814   _CRTIMP
1815   unsigned __int64
1816   __cdecl
1817   _wcstoui64_l(
1818     _In_z_ const wchar_t *_Str,
1819     _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr,
1820     _In_ int _Radix,
1821     _In_opt_ _locale_t _Locale);
1822 
1823 #endif /* _INTEGRAL_MAX_BITS >= 64 */
1824 
1825 #endif /* _WSTDLIB_DEFINED */
1826 
1827 #ifndef _POSIX_
1828 
1829 #ifndef _WSTDLIBP_DEFINED
1830 #define _WSTDLIBP_DEFINED
1831 
1832   _Check_return_
1833   _CRTIMP
1834   wchar_t*
1835   __cdecl
1836   _wfullpath(
1837     _Out_writes_opt_z_(_SizeInWords) wchar_t *_FullPath,
1838     _In_z_ const wchar_t *_Path,
1839     _In_ size_t _SizeInWords);
1840 
1841   _CRTIMP
1842   void
1843   __cdecl
1844   _wmakepath(
1845     _Pre_notnull_ _Post_z_ wchar_t *_ResultPath,
1846     _In_opt_z_ const wchar_t *_Drive,
1847     _In_opt_z_ const wchar_t *_Dir,
1848     _In_opt_z_ const wchar_t *_Filename,
1849     _In_opt_z_ const wchar_t *_Ext);
1850 
1851 #ifndef _CRT_WPERROR_DEFINED
1852 #define _CRT_WPERROR_DEFINED
1853   _CRTIMP
1854   void
1855   __cdecl
1856   _wperror(
1857     _In_opt_z_ const wchar_t *_ErrMsg);
1858 #endif
1859 
1860   _Check_return_
1861   _CRTIMP
1862   int
1863   __cdecl
1864   _wputenv(
1865     _In_z_ const wchar_t *_EnvString);
1866 
1867   _CRTIMP
1868   void
1869   __cdecl
1870   _wsearchenv(
1871     _In_z_ const wchar_t *_Filename,
1872     _In_z_ const wchar_t *_EnvVar,
1873     _Pre_notnull_ _Post_z_ wchar_t *_ResultPath);
1874 
1875   _CRTIMP
1876   void
1877   __cdecl
1878   _wsplitpath(
1879     _In_z_ const wchar_t *_FullPath,
1880     _Pre_maybenull_ _Post_z_ wchar_t *_Drive,
1881     _Pre_maybenull_ _Post_z_ wchar_t *_Dir,
1882     _Pre_maybenull_ _Post_z_ wchar_t *_Filename,
1883     _Pre_maybenull_ _Post_z_ wchar_t *_Ext);
1884 
1885 #endif /* _WSTDLIBP_DEFINED */
1886 
1887 #endif /* _POSIX_ */
1888 
1889 #ifndef _WSTRING_DEFINED
1890 #define _WSTRING_DEFINED
1891 
1892   _Check_return_
1893   _CRTIMP
1894   wchar_t*
1895   __cdecl
1896   _wcsdup(
1897     _In_z_ const wchar_t *_Str);
1898 
1899   wchar_t*
1900   __cdecl
1901   wcscat(
1902     _Inout_updates_z_(_String_length_(_Dest) + _String_length_(_Source) + 1) wchar_t *_Dest,
1903     _In_z_ const wchar_t *_Source);
1904 
1905   _CONST_RETURN
1906   wchar_t*
1907   __cdecl
1908   wcschr(
1909     _In_z_ const wchar_t *_Str,
1910     wchar_t _Ch);
1911 
1912   _Check_return_
1913   int
1914   __cdecl
1915   wcscmp(
1916     _In_z_ const wchar_t *_Str1,
1917     _In_z_ const wchar_t *_Str2);
1918 
1919   wchar_t*
1920   __cdecl
1921   wcscpy(
1922     _Out_writes_z_(_String_length_(_Source) + 1) wchar_t *_Dest,
1923     _In_z_ const wchar_t *_Source);
1924 
1925   _Check_return_
1926   size_t
1927   __cdecl
1928   wcscspn(
1929     _In_z_ const wchar_t *_Str,
1930     _In_z_ const wchar_t *_Control);
1931 
1932   _CRTIMP
1933   size_t
1934   __cdecl
1935   wcslen(
1936     _In_z_ const wchar_t *_Str);
1937 
1938   _When_(_MaxCount > _String_length_(_Src),
1939          _Post_satisfies_(return == _String_length_(_Src)))
1940   _When_(_MaxCount <= _String_length_(_Src),
1941          _Post_satisfies_(return == _MaxCount))
1942   size_t
1943   __cdecl
1944   wcsnlen(
1945     _In_reads_or_z_(_MaxCount) const wchar_t *_Src,
1946     _In_ size_t _MaxCount);
1947 
1948   wchar_t*
1949   __cdecl
1950   wcsncat(
1951     wchar_t *_Dest,
1952     const wchar_t *_Source,
1953     size_t _Count);
1954 
1955   _Check_return_
1956   int
1957   __cdecl
1958   wcsncmp(
1959     _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
1960     _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
1961     _In_ size_t _MaxCount);
1962 
1963   wchar_t*
1964   __cdecl
1965   wcsncpy(
1966     wchar_t *_Dest,
1967     const wchar_t *_Source,
1968     size_t _Count);
1969 
1970   _Check_return_
1971   _CONST_RETURN
1972   wchar_t*
1973   __cdecl
1974   wcspbrk(
1975     _In_z_ const wchar_t *_Str,
1976     _In_z_ const wchar_t *_Control);
1977 
1978   _Check_return_
1979   _CONST_RETURN
1980   wchar_t*
1981   __cdecl
1982   wcsrchr(
1983     _In_z_ const wchar_t *_Str,
1984     _In_ wchar_t _Ch);
1985 
1986   _Check_return_
1987   size_t
1988   __cdecl
1989   wcsspn(
1990     _In_z_ const wchar_t *_Str,
1991     _In_z_ const wchar_t *_Control);
1992 
1993   _CONST_RETURN
1994   wchar_t*
1995   __cdecl
1996   wcsstr(
1997     _In_z_ const wchar_t *_Str,
1998     _In_z_ const wchar_t *_SubStr);
1999 
2000   _Check_return_
2001   wchar_t*
2002   __cdecl
2003   wcstok(
2004     _Inout_opt_z_ wchar_t *_Str,
2005     _In_z_ const wchar_t *_Delim);
2006 
2007   _Check_return_
2008   _CRTIMP
2009   wchar_t*
2010   __cdecl
2011   _wcserror(
2012     _In_ int _ErrNum);
2013 
2014   _Check_return_
2015   _CRTIMP
2016   wchar_t*
2017   __cdecl
2018   __wcserror(
2019     _In_opt_z_ const wchar_t *_Str);
2020 
2021   _Check_return_
2022   _CRTIMP
2023   int
2024   __cdecl
2025   _wcsicmp(
2026     _In_z_ const wchar_t *_Str1,
2027     _In_z_ const wchar_t *_Str2);
2028 
2029   _Check_return_
2030   _CRTIMP
2031   int
2032   __cdecl
2033   _wcsicmp_l(
2034     _In_z_ const wchar_t *_Str1,
2035     _In_z_ const wchar_t *_Str2,
2036     _In_opt_ _locale_t _Locale);
2037 
2038   _Check_return_
2039   _CRTIMP
2040   int
2041   __cdecl
2042   _wcsnicmp(
2043     _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
2044     _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
2045     _In_ size_t _MaxCount);
2046 
2047   _Check_return_
2048   _CRTIMP
2049   int
2050   __cdecl
2051   _wcsnicmp_l(
2052     _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
2053     _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
2054     _In_ size_t _MaxCount,
2055     _In_opt_ _locale_t _Locale);
2056 
2057   _CRTIMP
2058   wchar_t*
2059   __cdecl
2060   _wcsnset(
2061     wchar_t *_Str,
2062     wchar_t _Val,
2063     size_t _MaxCount);
2064 
2065   _CRTIMP
2066   wchar_t*
2067   __cdecl
2068   _wcsrev(
2069     _Inout_z_ wchar_t *_Str);
2070 
2071   _CRTIMP
2072   wchar_t*
2073   __cdecl
2074   _wcsset(
2075     wchar_t *_Str,
2076     wchar_t _Val);
2077 
2078   _CRTIMP
2079   wchar_t*
2080   __cdecl
2081   _wcslwr(
2082     _Inout_z_ wchar_t *_String);
2083 
2084   _CRTIMP
2085   wchar_t*
2086   _wcslwr_l(
2087     wchar_t *_String,
2088     _locale_t _Locale);
2089 
2090   _CRTIMP
2091   wchar_t*
2092   __cdecl
2093   _wcsupr(
2094     _Inout_z_ wchar_t *_String);
2095 
2096   _CRTIMP
2097   wchar_t*
2098   _wcsupr_l(
2099     wchar_t *_String,
2100     _locale_t _Locale);
2101 
2102   _Check_return_opt_
2103   size_t
2104   __cdecl
2105   wcsxfrm(
2106     _Out_writes_opt_(_MaxCount) _Post_maybez_ wchar_t *_Dst,
2107     _In_z_ const wchar_t *_Src,
2108     _In_ size_t _MaxCount);
2109 
2110   _Check_return_opt_
2111   _CRTIMP
2112   size_t
2113   __cdecl
2114   _wcsxfrm_l(
2115     _Out_writes_opt_(_MaxCount) _Post_maybez_ wchar_t *_Dst,
2116     _In_z_ const wchar_t *_Src,
2117     _In_ size_t _MaxCount,
2118     _In_opt_ _locale_t _Locale);
2119 
2120   _Check_return_
2121   int
2122   __cdecl
2123   wcscoll(
2124     _In_z_ const wchar_t *_Str1,
2125     _In_z_ const wchar_t *_Str2);
2126 
2127   _Check_return_
2128   _CRTIMP
2129   int
2130   __cdecl
2131   _wcscoll_l(
2132     _In_z_ const wchar_t *_Str1,
2133     _In_z_ const wchar_t *_Str2,
2134     _In_opt_ _locale_t _Locale);
2135 
2136   _Check_return_
2137   _CRTIMP
2138   int
2139   __cdecl
2140   _wcsicoll(
2141     _In_z_ const wchar_t *_Str1,
2142     _In_z_ const wchar_t *_Str2);
2143 
2144   _Check_return_
2145   _CRTIMP
2146   int
2147   __cdecl
2148   _wcsicoll_l(
2149     _In_z_ const wchar_t *_Str1,
2150     _In_z_ const wchar_t *_Str2,
2151     _In_opt_ _locale_t _Locale);
2152 
2153   _Check_return_
2154   _CRTIMP
2155   int
2156   __cdecl
2157   _wcsncoll(
2158     _In_z_ const wchar_t *_Str1,
2159     _In_z_ const wchar_t *_Str2,
2160     _In_ size_t _MaxCount);
2161 
2162   _Check_return_
2163   _CRTIMP
2164   int
2165   __cdecl
2166   _wcsncoll_l(
2167     _In_z_ const wchar_t *_Str1,
2168     _In_z_ const wchar_t *_Str2,
2169     _In_ size_t _MaxCount,
2170     _In_opt_ _locale_t _Locale);
2171 
2172   _Check_return_
2173   _CRTIMP
2174   int
2175   __cdecl
2176   _wcsnicoll(
2177     _In_z_ const wchar_t *_Str1,
2178     _In_z_ const wchar_t *_Str2,
2179     _In_ size_t _MaxCount);
2180 
2181   _Check_return_
2182   _CRTIMP
2183   int
2184   __cdecl
2185   _wcsnicoll_l(
2186     _In_z_ const wchar_t *_Str1,
2187     _In_z_ const wchar_t *_Str2,
2188     _In_ size_t _MaxCount,
2189     _In_opt_ _locale_t _Locale);
2190 
2191 #ifndef NO_OLDNAMES
2192 
2193   _Check_return_
2194   _CRTIMP
2195   wchar_t*
2196   __cdecl
2197   wcsdup(
2198     _In_z_ const wchar_t *_Str);
2199 
2200 #define wcswcs wcsstr
2201 
2202   _Check_return_
2203   _CRTIMP
2204   int
2205   __cdecl
2206   wcsicmp(
2207     _In_z_ const wchar_t *_Str1,
2208     _In_z_ const wchar_t *_Str2);
2209 
2210   _Check_return_
2211   _CRTIMP
2212   int
2213   __cdecl
2214   wcsnicmp(
2215     _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
2216     _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
2217     _In_ size_t _MaxCount);
2218 
2219   _CRTIMP
2220   wchar_t*
2221   __cdecl
2222   wcsnset(
2223     _Inout_updates_z_(_MaxCount) wchar_t *_Str,
2224     _In_ wchar_t _Val,
2225     _In_ size_t _MaxCount);
2226 
2227   _CRTIMP
2228   wchar_t*
2229   __cdecl
2230   wcsrev(
2231     _Inout_z_ wchar_t *_Str);
2232 
2233   _CRTIMP
2234   wchar_t*
2235   __cdecl
2236   wcsset(
2237     _Inout_z_ wchar_t *_Str,
2238     wchar_t _Val);
2239 
2240   _CRTIMP
2241   wchar_t*
2242   __cdecl
2243   wcslwr(
2244     _Inout_z_ wchar_t *_Str);
2245 
2246   _CRTIMP
2247   wchar_t*
2248   __cdecl
2249   wcsupr(
2250     _Inout_z_ wchar_t *_Str);
2251 
2252   _Check_return_
2253   _CRTIMP
2254   int
2255   __cdecl
2256   wcsicoll(
2257     _In_z_ const wchar_t *_Str1,
2258     _In_z_ const wchar_t *_Str2);
2259 
2260 #endif /* NO_OLDNAMES */
2261 
2262 #endif /* _WSTRING_DEFINED */
2263 
2264 #ifndef _TM_DEFINED
2265 #define _TM_DEFINED
2266   struct tm {
2267     int tm_sec;
2268     int tm_min;
2269     int tm_hour;
2270     int tm_mday;
2271     int tm_mon;
2272     int tm_year;
2273     int tm_wday;
2274     int tm_yday;
2275     int tm_isdst;
2276   };
2277 #endif
2278 
2279 #ifndef _WTIME_DEFINED
2280 #define _WTIME_DEFINED
2281 
2282   _CRTIMP
2283   wchar_t*
2284   __cdecl
2285   _wasctime(
2286     _In_ const struct tm *_Tm);
2287 
2288   _CRTIMP
2289   wchar_t*
2290   __cdecl
2291   _wctime32(
2292     _In_ const __time32_t *_Time);
2293 
2294   _Success_(return > 0)
2295   size_t
2296   __cdecl
2297   wcsftime(
2298     _Out_writes_z_(_SizeInWords) wchar_t *_Buf,
2299     _In_ size_t _SizeInWords,
2300     _In_z_ _Printf_format_string_ const wchar_t *_Format,
2301     _In_ const struct tm *_Tm);
2302 
2303   _Success_(return > 0)
2304   _CRTIMP
2305   size_t
2306   __cdecl
2307   _wcsftime_l(
2308     _Out_writes_z_(_SizeInWords) wchar_t *_Buf,
2309     _In_ size_t _SizeInWords,
2310     _In_z_ _Printf_format_string_ const wchar_t *_Format,
2311     _In_ const struct tm *_Tm,
2312     _In_opt_ _locale_t _Locale);
2313 
2314   _CRTIMP
2315   wchar_t*
2316   __cdecl
2317   _wstrdate(
2318     _Out_writes_z_(9) wchar_t *_Buffer);
2319 
2320   _CRTIMP
2321   wchar_t*
2322   __cdecl
2323   _wstrtime(
2324     _Out_writes_z_(9) wchar_t *_Buffer);
2325 
2326   _CRTIMP
2327   errno_t
2328   __cdecl
2329   _wasctime_s(
2330     _Out_writes_(_SizeInWords) _Post_readable_size_(26) wchar_t *_Buf,
2331     _In_ size_t _SizeInWords,
2332     _In_ const struct tm *_Tm);
2333 
2334   _CRTIMP
2335   errno_t
2336   __cdecl
2337   _wctime32_s(
2338     _Out_writes_(_SizeInWords) _Post_readable_size_(26) wchar_t *_Buf,
2339     _In_ size_t _SizeInWords,
2340     _In_ const __time32_t *_Time);
2341 
2342   _CRTIMP
2343   errno_t
2344   __cdecl
2345   _wstrdate_s(
2346     _Out_writes_(_SizeInWords) _Post_readable_size_(9) wchar_t *_Buf,
2347     _In_range_(>=, 9) size_t _SizeInWords);
2348 
2349   _CRTIMP
2350   errno_t
2351   __cdecl
2352   _wstrtime_s(
2353     _Out_writes_(_SizeInWords) _Post_readable_size_(9) wchar_t *_Buf,
2354     _In_ size_t _SizeInWords);
2355 
2356 #if _INTEGRAL_MAX_BITS >= 64
2357 
2358   _CRTIMP
2359   wchar_t*
2360   __cdecl
2361   _wctime64(
2362     _In_ const __time64_t *_Time);
2363 
2364   _CRTIMP
2365   errno_t
2366   __cdecl
2367   _wctime64_s(
2368     _Out_writes_(_SizeInWords) _Post_readable_size_(26) wchar_t *_Buf,
2369     _In_ size_t _SizeInWords,
2370     _In_ const __time64_t *_Time);
2371 
2372 #endif /* _INTEGRAL_MAX_BITS >= 64 */
2373 
2374 #if !defined (RC_INVOKED) && !defined (_INC_WTIME_INL)
2375 #define _INC_WTIME_INL
2376 #ifdef _USE_32BIT_TIME_T
2377 __CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime32(_Time); }
2378 #else /* !_USE_32BIT_TIME_T */
2379 __CRT_INLINE wchar_t *__cdecl _wctime(const time_t *_Time) { return _wctime64(_Time); }
2380 #endif /* !_USE_32BIT_TIME_T */
2381 #endif /* !defined (RC_INVOKED) && !defined (_INC_WTIME_INL) */
2382 
2383 #endif /* _WTIME_DEFINED */
2384 
2385   typedef int mbstate_t;
2386   typedef wchar_t _Wint_t;
2387 
2388   wint_t
2389   __cdecl
2390   btowc(
2391     int);
2392 
2393   size_t
2394   __cdecl
2395   mbrlen(
2396     _In_reads_bytes_opt_(_SizeInBytes) _Pre_opt_z_ const char *_Ch,
2397     _In_ size_t _SizeInBytes,
2398     _Out_opt_ mbstate_t *_State);
2399 
2400   size_t
2401   __cdecl
2402   mbrtowc(
2403     _Pre_maybenull_ _Post_z_ wchar_t *_DstCh,
2404     _In_reads_bytes_opt_(_SizeInBytes) _Pre_opt_z_ const char *_SrcCh,
2405     _In_ size_t _SizeInBytes,
2406     _Out_opt_ mbstate_t *_State);
2407 
2408   size_t
2409   __cdecl
2410   mbsrtowcs(
2411     _Pre_notnull_ _Post_z_ wchar_t *_Dest,
2412     _Inout_ _Deref_prepost_opt_valid_ const char **_PSrc,
2413     _In_ size_t _Count,
2414     _Inout_opt_ mbstate_t *_State);
2415 
2416   size_t
2417   __cdecl
2418   wcrtomb(
2419     _Pre_maybenull_ _Post_z_ char *_Dest,
2420     _In_ wchar_t _Source,
2421     _Out_opt_ mbstate_t *_State);
2422 
2423   size_t
2424   __cdecl
2425   wcsrtombs(
2426     _Pre_maybenull_ _Post_z_ char *_Dest,
2427     _Inout_ _Deref_prepost_z_ const wchar_t **_PSource,
2428     _In_ size_t _Count,
2429     _Out_opt_ mbstate_t *_State);
2430 
2431   int
2432   __cdecl
2433   wctob(
2434     _In_ wint_t _WCh);
2435 
2436 #ifndef __NO_ISOCEXT /* these need static lib libmingwex.a */
2437 
2438   wchar_t*
2439   __cdecl
2440   wmemset(
2441     _Out_writes_all_(_N) wchar_t *_S,
2442     _In_ wchar_t _C,
2443     _In_ size_t _N);
2444 
2445   _CONST_RETURN
2446   wchar_t*
2447   __cdecl
2448   wmemchr(
2449     _In_reads_(_N) const wchar_t *_S,
2450     _In_ wchar_t _C,
2451     _In_ size_t _N);
2452 
2453   int
2454   __cdecl
2455   wmemcmp(
2456     _In_reads_(_N) const wchar_t *_S1,
2457     _In_reads_(_N) const wchar_t *_S2,
2458     _In_ size_t _N);
2459 
2460   _Post_equal_to_(_S1)
2461   _At_buffer_(_S1, _Iter_, _N, _Post_satisfies_(_S1[_Iter_] == _S2[_Iter_]))
2462   wchar_t*
2463   __cdecl
2464   wmemcpy(
2465     _Out_writes_all_(_N) wchar_t *_S1,
2466     _In_reads_(_N) const wchar_t *_S2,
2467     _In_ size_t _N);
2468 
2469   wchar_t*
2470   __cdecl
2471   wmemmove(
2472     _Out_writes_all_opt_(_N) wchar_t *_S1,
2473     _In_reads_opt_(_N) const wchar_t *_S2,
2474     _In_ size_t _N);
2475 
2476   __MINGW_EXTENSION
2477   long long
2478   __cdecl
2479   wcstoll(
2480     const wchar_t *nptr,
2481     wchar_t **endptr,
2482     int base);
2483 
2484   __MINGW_EXTENSION
2485   unsigned long long
2486   __cdecl
2487   wcstoull(
2488     const wchar_t *nptr,
2489     wchar_t **endptr,
2490     int base);
2491 
2492 #endif /* __NO_ISOCEXT */
2493 
2494   void*
2495   __cdecl
2496   memmove(
2497     _Out_writes_bytes_all_opt_(_MaxCount) void *_Dst,
2498     _In_reads_bytes_opt_(_MaxCount) const void *_Src,
2499     _In_ size_t _MaxCount);
2500 
2501   _Post_equal_to_(_Dst)
2502   _At_buffer_((unsigned char*)_Dst,
2503               _Iter_,
2504               _MaxCount,
2505               _Post_satisfies_(((unsigned char*)_Dst)[_Iter_] == ((unsigned char*)_Src)[_Iter_]))
2506   void*
2507   __cdecl
2508   memcpy(
2509     _Out_writes_bytes_all_(_MaxCount) void *_Dst,
2510     _In_reads_bytes_(_MaxCount) const void *_Src,
2511     _In_ size_t _MaxCount);
2512 
2513   __CRT_INLINE
2514   int
2515   __cdecl
2516   fwide(
2517     _In_opt_ FILE *_F,
2518     int _M)
2519   {
2520     (void)_F;
2521     return (_M);
2522   }
2523 
2524   __CRT_INLINE
2525   int
2526   __cdecl
2527   mbsinit(
2528     _In_opt_ const mbstate_t *_P)
2529   {
2530     return (!_P || *_P==0);
2531   }
2532 
2533   __CRT_INLINE
2534   _CONST_RETURN
2535   wchar_t*
2536   __cdecl
2537   wmemchr(
2538     _In_reads_(_N) const wchar_t *_S,
2539     _In_ wchar_t _C,
2540     _In_ size_t _N)
2541   {
2542     for (;0<_N;++_S,--_N)
2543     {
2544       if (*_S==_C) return (_CONST_RETURN wchar_t *)(_S);
2545     }
2546     return (0);
2547   }
2548 
2549   __CRT_INLINE
2550   int
2551   __cdecl
2552   wmemcmp(
2553     _In_reads_(_N) const wchar_t *_S1,
2554     _In_reads_(_N) const wchar_t *_S2,
2555     _In_ size_t _N)
2556   {
2557     for (; 0 < _N; ++_S1,++_S2,--_N)
2558     {
2559       if (*_S1!=*_S2) return (*_S1 < *_S2 ? -1 : +1);
2560     }
2561     return (0);
2562   }
2563 
2564   _Post_equal_to_(_S1)
2565   _At_buffer_(_S1,
2566               _Iter_,
2567               _N,
2568               _Post_satisfies_(_S1[_Iter_] == _S2[_Iter_]))
2569   __CRT_INLINE
2570   wchar_t*
2571   __cdecl
2572   wmemcpy(
2573     _Out_writes_all_(_N) wchar_t *_S1,
2574     _In_reads_(_N) const wchar_t *_S2,
2575     _In_ size_t _N)
2576   {
2577     return (wchar_t *)memcpy(_S1,_S2,_N*sizeof(wchar_t));
2578   }
2579 
2580   __CRT_INLINE
2581   wchar_t*
2582   __cdecl
2583   wmemmove(
2584     _Out_writes_all_opt_(_N) wchar_t *_S1,
2585     _In_reads_opt_(_N) const wchar_t *_S2,
2586     _In_ size_t _N)
2587   {
2588     return (wchar_t *)memmove(_S1,_S2,_N*sizeof(wchar_t));
2589   }
2590 
2591   __CRT_INLINE
2592   wchar_t*
2593   __cdecl
2594   wmemset(
2595     _Out_writes_all_(_N) wchar_t *_S,
2596     _In_ wchar_t _C,
2597     _In_ size_t _N)
2598   {
2599     wchar_t *_Su = _S;
2600     for (;0<_N;++_Su,--_N) {
2601       *_Su = _C;
2602     }
2603     return (_S);
2604   }
2605 
2606 #ifdef _MSC_VER
2607 #pragma warning(pop)
2608 #endif
2609 
2610 #ifdef __cplusplus
2611 }
2612 #endif
2613 
2614 #pragma pack(pop)
2615 
2616 #include <sec_api/wchar_s.h>
2617 #endif
2618