1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6#ifndef _INC_WCHAR_S
  7#define _INC_WCHAR_S
  8
  9#include <wchar.h>
 10
 11#if defined(__LIBMSVCRT__)
 12/* When building mingw-w64, this should be blank.  */
 13#define _SECIMP
 14#else
 15#ifndef _SECIMP
 16#define _SECIMP __declspec(dllimport)
 17#endif /* _SECIMP */
 18#endif /* defined(__LIBMSVCRT__) */
 19
 20#ifdef __cplusplus
 21extern "C" {
 22#endif
 23
 24#ifndef _WIO_S_DEFINED
 25#define _WIO_S_DEFINED
 26  _SECIMP errno_t __cdecl _waccess_s (const wchar_t *_Filename,int _AccessMode);
 27  _SECIMP errno_t __cdecl _wmktemp_s (wchar_t *_TemplateName,size_t _SizeInWords);
 28#endif
 29
 30#ifndef _WCONIO_S_DEFINED
 31#define _WCONIO_S_DEFINED
 32  _SECIMP errno_t __cdecl _cgetws_s (wchar_t *_Buffer,size_t _SizeInWords,size_t *_SizeRead);
 33  _SECIMP int __cdecl _cwprintf_s (const wchar_t *_Format,...);
 34  _CRTIMP int __cdecl _cwscanf_s(const wchar_t *_Format,...);
 35  _CRTIMP int __cdecl _cwscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
 36  _SECIMP int __cdecl _vcwprintf_s (const wchar_t *_Format,va_list _ArgList);
 37  _SECIMP int __cdecl _cwprintf_s_l (const wchar_t *_Format,_locale_t _Locale,...);
 38  _SECIMP int __cdecl _vcwprintf_s_l (const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
 39#endif
 40
 41#ifndef _WSTDIO_S_DEFINED
 42#define _WSTDIO_S_DEFINED
 43  _CRTIMP wchar_t *__cdecl _getws_s(wchar_t *_Str,size_t _SizeInWords);
 44  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(wchar_t*,_getws_s,wchar_t,_DstBuf)
 45
 46#ifdef _UCRT
 47  int __cdecl __stdio_common_vswprintf_s(unsigned __int64 _Options, wchar_t *_Str, size_t _Len, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
 48  int __cdecl __stdio_common_vsnwprintf_s(unsigned __int64 _Options, wchar_t *_Str, size_t _Len, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
 49  int __cdecl __stdio_common_vfwprintf_s(unsigned __int64 _Options, FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList);
 50
 51  __mingw_ovr int __cdecl _vfwscanf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
 52  {
 53    return __stdio_common_vfwscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS | _CRT_INTERNAL_SCANF_SECURECRT, _File, _Format, _Locale, _ArgList);
 54  }
 55
 56  __mingw_ovr int __cdecl vfwscanf_s(FILE* _File, const wchar_t *_Format, va_list _ArgList)
 57  {
 58    return _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
 59  }
 60
 61  __mingw_ovr int __cdecl _vwscanf_s_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
 62  {
 63    return _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
 64  }
 65
 66  __mingw_ovr int __cdecl vwscanf_s(const wchar_t *_Format, va_list _ArgList)
 67  {
 68    return _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
 69  }
 70
 71  __mingw_ovr int __cdecl _fwscanf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...)
 72  {
 73    __builtin_va_list _ArgList;
 74    int _Ret;
 75    __builtin_va_start(_ArgList, _Locale);
 76    _Ret = _vfwscanf_s_l(_File, _Format, _Locale, _ArgList);
 77    __builtin_va_end(_ArgList);
 78    return _Ret;
 79  }
 80
 81  __mingw_ovr int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...)
 82  {
 83    __builtin_va_list _ArgList;
 84    int _Ret;
 85    __builtin_va_start(_ArgList, _Format);
 86    _Ret = _vfwscanf_s_l(_File, _Format, NULL, _ArgList);
 87    __builtin_va_end(_ArgList);
 88    return _Ret;
 89  }
 90
 91  __mingw_ovr int __cdecl _wscanf_s_l(const wchar_t *_Format, _locale_t _Locale, ...)
 92  {
 93    __builtin_va_list _ArgList;
 94    int _Ret;
 95    __builtin_va_start(_ArgList, _Locale);
 96    _Ret = _vfwscanf_s_l(stdin, _Format, _Locale, _ArgList);
 97    __builtin_va_end(_ArgList);
 98    return _Ret;
 99  }
100
101  __mingw_ovr int __cdecl wscanf_s(const wchar_t *_Format, ...)
102  {
103    __builtin_va_list _ArgList;
104    int _Ret;
105    __builtin_va_start(_ArgList, _Format);
106    _Ret = _vfwscanf_s_l(stdin, _Format, NULL, _ArgList);
107    __builtin_va_end(_ArgList);
108    return _Ret;
109  }
110
111  __mingw_ovr int __cdecl _vswscanf_s_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
112  {
113    return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS | _CRT_INTERNAL_SCANF_SECURECRT, _Src, (size_t)-1, _Format, _Locale, _ArgList);
114  }
115
116  __mingw_ovr int __cdecl vswscanf_s(const wchar_t *_Src, const wchar_t *_Format, va_list _ArgList)
117  {
118    return _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
119  }
120
121  __mingw_ovr int __cdecl _swscanf_s_l(const wchar_t *_Src, const wchar_t *_Format, _locale_t _Locale, ...)
122  {
123    __builtin_va_list _ArgList;
124    int _Ret;
125    __builtin_va_start(_ArgList, _Locale);
126    _Ret = _vswscanf_s_l(_Src, _Format, _Locale, _ArgList);
127    __builtin_va_end(_ArgList);
128    return _Ret;
129  }
130  __mingw_ovr int __cdecl swscanf_s(const wchar_t *_Src, const wchar_t *_Format, ...)
131  {
132    __builtin_va_list _ArgList;
133    int _Ret;
134    __builtin_va_start(_ArgList, _Format);
135    _Ret = _vswscanf_s_l(_Src, _Format, NULL, _ArgList);
136    __builtin_va_end(_ArgList);
137    return _Ret;
138  }
139
140  __mingw_ovr int __cdecl _vsnwscanf_s_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
141  {
142    return __stdio_common_vswscanf(_CRT_INTERNAL_LOCAL_SCANF_OPTIONS | _CRT_INTERNAL_SCANF_SECURECRT, _Src, _MaxCount, _Format, _Locale, _ArgList);
143  }
144  __mingw_ovr int __cdecl _snwscanf_s_l(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
145  {
146    __builtin_va_list _ArgList;
147    int _Ret;
148    __builtin_va_start(_ArgList, _Locale);
149    _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, _Locale, _ArgList);
150    __builtin_va_end(_ArgList);
151    return _Ret;
152  }
153  __mingw_ovr int __cdecl _snwscanf_s(const wchar_t *_Src, size_t _MaxCount, const wchar_t *_Format, ...)
154  {
155    __builtin_va_list _ArgList;
156    int _Ret;
157    __builtin_va_start(_ArgList, _Format);
158    _Ret = _vsnwscanf_s_l(_Src, _MaxCount, _Format, NULL, _ArgList);
159    __builtin_va_end(_ArgList);
160    return _Ret;
161  }
162
163  __mingw_ovr int __cdecl _vfwprintf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
164  {
165    return __stdio_common_vfwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _File, _Format, _Locale, _ArgList);
166  }
167  __mingw_ovr int __cdecl _vwprintf_s_l(const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
168  {
169    return _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
170  }
171  __mingw_ovr int __cdecl vfwprintf_s(FILE *_File, const wchar_t *_Format, va_list _ArgList)
172  {
173    return _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
174  }
175  __mingw_ovr int __cdecl vwprintf_s(const wchar_t *_Format, va_list _ArgList)
176  {
177    return _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
178  }
179  __mingw_ovr int __cdecl _fwprintf_s_l(FILE *_File, const wchar_t *_Format, _locale_t _Locale, ...)
180  {
181    __builtin_va_list _ArgList;
182    int _Ret;
183    __builtin_va_start(_ArgList, _Locale);
184    _Ret = _vfwprintf_s_l(_File, _Format, _Locale, _ArgList);
185    __builtin_va_end(_ArgList);
186    return _Ret;
187  }
188  __mingw_ovr int __cdecl _wprintf_s_l(const wchar_t *_Format, _locale_t _Locale, ...)
189  {
190    __builtin_va_list _ArgList;
191    int _Ret;
192    __builtin_va_start(_ArgList, _Locale);
193    _Ret = _vfwprintf_s_l(stdout, _Format, _Locale, _ArgList);
194    __builtin_va_end(_ArgList);
195    return _Ret;
196  }
197  __mingw_ovr int __cdecl fwprintf_s(FILE *_File, const wchar_t *_Format, ...)
198  {
199    __builtin_va_list _ArgList;
200    int _Ret;
201    __builtin_va_start(_ArgList, _Format);
202    _Ret = _vfwprintf_s_l(_File, _Format, NULL, _ArgList);
203    __builtin_va_end(_ArgList);
204    return _Ret;
205  }
206  __mingw_ovr int __cdecl wprintf_s(const wchar_t *_Format, ...)
207  {
208    __builtin_va_list _ArgList;
209    int _Ret;
210    __builtin_va_start(_ArgList, _Format);
211    _Ret = _vfwprintf_s_l(stdout, _Format, NULL, _ArgList);
212    __builtin_va_end(_ArgList);
213    return _Ret;
214  }
215
216  __mingw_ovr int __cdecl _vswprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
217  {
218    return __stdio_common_vswprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _DstBuf, _DstSize, _Format, _Locale, _ArgList);
219  }
220  __mingw_ovr int __cdecl vswprintf_s(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, va_list _ArgList)
221  {
222    return _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
223  }
224  __mingw_ovr int __cdecl _swprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, _locale_t _Locale, ...)
225  {
226    __builtin_va_list _ArgList;
227    int _Ret;
228    __builtin_va_start(_ArgList, _Locale);
229    _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, _Locale, _ArgList);
230    __builtin_va_end(_ArgList);
231    return _Ret;
232  }
233  __mingw_ovr int __cdecl swprintf_s(wchar_t *_DstBuf, size_t _DstSize, const wchar_t *_Format, ...)
234  {
235    __builtin_va_list _ArgList;
236    int _Ret;
237    __builtin_va_start(_ArgList, _Format);
238    _Ret = _vswprintf_s_l(_DstBuf, _DstSize, _Format, NULL, _ArgList);
239    __builtin_va_end(_ArgList);
240    return _Ret;
241  }
242
243  __mingw_ovr int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, va_list _ArgList)
244  {
245    return __stdio_common_vsnwprintf_s(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList);
246  }
247  __mingw_ovr int __cdecl _vsnwprintf_s(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, va_list _ArgList)
248  {
249    return _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL, _ArgList);
250  }
251  __mingw_ovr int __cdecl _snwprintf_s_l(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, _locale_t _Locale, ...)
252  {
253    __builtin_va_list _ArgList;
254    int _Ret;
255    __builtin_va_start(_ArgList, _Locale);
256    _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, _Locale, _ArgList);
257    __builtin_va_end(_ArgList);
258    return _Ret;
259  }
260  __mingw_ovr int __cdecl _snwprintf_s(wchar_t *_DstBuf, size_t _DstSize, size_t _MaxCount, const wchar_t *_Format, ...)
261  {
262    __builtin_va_list _ArgList;
263    int _Ret;
264    __builtin_va_start(_ArgList, _Format);
265    _Ret = _vsnwprintf_s_l(_DstBuf, _DstSize, _MaxCount, _Format, NULL, _ArgList);
266    __builtin_va_end(_ArgList);
267    return _Ret;
268  }
269#else /* _UCRT */
270  int __cdecl fwprintf_s(FILE *_File,const wchar_t *_Format,...);
271  int __cdecl wprintf_s(const wchar_t *_Format,...);
272  int __cdecl vfwprintf_s(FILE *_File,const wchar_t *_Format,va_list _ArgList);
273  int __cdecl vwprintf_s(const wchar_t *_Format,va_list _ArgList);
274
275  int __cdecl vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,va_list _ArgList);
276
277  int __cdecl swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,...);
278
279  _CRTIMP int __cdecl _vsnwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
280
281  _CRTIMP int __cdecl _snwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
282
283
284  _CRTIMP int __cdecl _wprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
285  _CRTIMP int __cdecl _vwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
286  _CRTIMP int __cdecl _fwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
287  _CRTIMP int __cdecl _vfwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
288  _CRTIMP int __cdecl _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,...);
289  _CRTIMP int __cdecl _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
290  _CRTIMP int __cdecl _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
291  _CRTIMP int __cdecl _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
292  _CRTIMP int __cdecl _fwscanf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
293  _CRTIMP int __cdecl fwscanf_s(FILE *_File, const wchar_t *_Format, ...);
294  _CRTIMP int __cdecl _swscanf_s_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
295  _CRTIMP int __cdecl swscanf_s(const wchar_t *_Src,const wchar_t *_Format,...);
296  _CRTIMP int __cdecl _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
297  _CRTIMP int __cdecl _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
298  _CRTIMP int __cdecl _wscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
299  _CRTIMP int __cdecl wscanf_s(const wchar_t *_Format, ...);
300#endif /* !_UCRT */
301
302  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(int, vswprintf_s, wchar_t, _Dst, const wchar_t*, _Format, va_list, _ArgList)
303  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(int,swprintf_s,vswprintf_s,wchar_t,_Dst,const wchar_t*,_Format)
304  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(int,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format,va_list,_ArgList)
305  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(int,_snwprintf_s,_vsnwprintf_s,wchar_t,_DstBuf,size_t,_MaxCount,const wchar_t*,_Format)
306
307  _CRTIMP errno_t __cdecl _wfopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode);
308  _CRTIMP errno_t __cdecl _wfreopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile);
309
310  _CRTIMP errno_t __cdecl _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
311  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t,_wtmpnam_s,wchar_t,_DstBuf)
312#endif /* _WSTDIO_S_DEFINED */
313
314#ifndef _WSTRING_S_DEFINED
315#define _WSTRING_S_DEFINED
316  _CRTIMP wchar_t *__cdecl wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context);
317  _CRTIMP errno_t __cdecl _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum);
318  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _wcserror_s, wchar_t, _Buf, int, _ErrNum)
319  _CRTIMP errno_t __cdecl __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg);
320  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, __wcserror_s, wchar_t, _Buffer, const wchar_t *, _ErrMsg)
321  _CRTIMP errno_t __cdecl _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount);
322  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _wcsnset_s, wchar_t, _Dst, wchar_t, _Val, size_t, _MaxCount)
323  _CRTIMP errno_t __cdecl _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val);
324  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _wcsset_s, wchar_t, _Str, wchar_t, _Val)
325  _CRTIMP errno_t __cdecl _wcslwr_s(wchar_t *_Str,size_t _SizeInWords);
326  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wcslwr_s, wchar_t, _Str)
327  _CRTIMP errno_t __cdecl _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale);
328  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _wcslwr_s_l, wchar_t, _Str, _locale_t, _Locale)
329  _CRTIMP errno_t __cdecl _wcsupr_s(wchar_t *_Str,size_t _Size);
330  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wcsupr_s, wchar_t, _Str)
331  _CRTIMP errno_t __cdecl _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale);
332  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, _wcsupr_s_l, wchar_t, _Str, _locale_t, _Locale)
333
334  _CRTIMP errno_t __cdecl wcscat_s(wchar_t *_Dst, rsize_t _DstSize, const wchar_t *_Src);
335  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscat_s, wchar_t, _Dest, const wchar_t *, _Source)
336  _CRTIMP errno_t __cdecl wcscpy_s(wchar_t *_Dst, rsize_t _DstSize, const wchar_t *_Src);
337  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscpy_s, wchar_t, _Dest, const wchar_t *, _Source)
338
339  _CRTIMP errno_t __cdecl wcsncat_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount);
340  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, wcsncat_s, wchar_t, _Dst, const wchar_t *, _Src, size_t, _MaxCount)
341  _CRTIMP errno_t __cdecl _wcsncat_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
342  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _wcsncat_s_l, wchar_t, _Dst, const wchar_t *, _Src, size_t, _MaxCount, _locale_t, _Locale)
343  _CRTIMP errno_t __cdecl wcsncpy_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount);
344  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, wcsncpy_s, wchar_t, _Dst, const wchar_t *, _Src, size_t, _MaxCount)
345  _CRTIMP errno_t __cdecl _wcsncpy_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
346  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _wcsncpy_s_l, wchar_t, _Dst, const wchar_t *, _Src, size_t, _MaxCount, _locale_t, _Locale)
347  _CRTIMP wchar_t *__cdecl _wcstok_s_l(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context,_locale_t _Locale);
348  _CRTIMP errno_t __cdecl _wcsset_s_l(wchar_t *_Str,size_t _SizeInChars,wchar_t _Val,_locale_t _Locale);
349  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(errno_t, _wcsset_s_l, wchar_t, _Str, wchar_t, _Val, _locale_t, _Locale)
350  _CRTIMP errno_t __cdecl _wcsnset_s_l(wchar_t *_Str,size_t _SizeInChars,wchar_t _Val, size_t _Count,_locale_t _Locale);
351  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(errno_t, _wcsnset_s_l, wchar_t, _Str, wchar_t, _Val, size_t, _Count, _locale_t, _Locale)
352
353  __forceinline size_t __cdecl wcsnlen_s(const wchar_t * _src, size_t _count) {
354    return _src ? wcsnlen(_src, _count) : 0;
355  }
356#endif
357
358#ifndef _WTIME_S_DEFINED
359#define _WTIME_S_DEFINED
360  _SECIMP errno_t __cdecl _wasctime_s (wchar_t *_Buf,size_t _SizeInWords,const struct tm *_Tm);
361  _SECIMP errno_t __cdecl _wctime32_s (wchar_t *_Buf,size_t _SizeInWords,const __time32_t *_Time);
362  _SECIMP errno_t __cdecl _wstrdate_s (wchar_t *_Buf,size_t _SizeInWords);
363  _SECIMP errno_t __cdecl _wstrtime_s (wchar_t *_Buf,size_t _SizeInWords);
364  _SECIMP errno_t __cdecl _wctime64_s (wchar_t *_Buf,size_t _SizeInWords,const __time64_t *_Time);
365
366#if !defined (RC_INVOKED) && !defined (_INC_WTIME_S_INL)
367#define _INC_WTIME_S_INL
368  errno_t __cdecl _wctime_s(wchar_t *, size_t, const time_t *);
369#ifndef _USE_32BIT_TIME_T
370__CRT_INLINE errno_t __cdecl _wctime_s(wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime64_s(_Buffer,_SizeInWords,_Time); }
371#endif
372#endif
373#endif
374
375  _CRTIMP errno_t __cdecl mbsrtowcs_s(size_t *_Retval,wchar_t *_Dst,size_t _SizeInWords,const char **_PSrc,size_t _N,mbstate_t *_State);
376  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(errno_t,mbsrtowcs_s,size_t*,_Retval,wchar_t,_Dst,const char**,_PSrc,size_t,_N,mbstate_t,_State)
377
378  _CRTIMP errno_t __cdecl wcrtomb_s(size_t *_Retval,char *_Dst,size_t _SizeInBytes,wchar_t _Ch,mbstate_t *_State);
379  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(errno_t,wcrtomb_s,size_t*,_Retval,char,_Dst,wchar_t,_Ch,mbstate_t,_State)
380
381  _CRTIMP errno_t __cdecl wcsrtombs_s(size_t *_Retval,char *_Dst,size_t _SizeInBytes,const wchar_t **_Src,size_t _Size,mbstate_t *_State);
382  __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(errno_t,wcsrtombs_s,size_t,_Retval,char,_Dst,const wchar_t**,_Src,size_t,_Size,mbstate_t,_State)
383
384  _SECIMP errno_t __cdecl wmemcpy_s (wchar_t *_dest,size_t _numberOfElements,const wchar_t *_src,size_t _count);
385  _SECIMP errno_t __cdecl wmemmove_s(wchar_t *_dest,size_t _numberOfElements,const wchar_t *_src,size_t _count);
386
387
388#ifdef __cplusplus
389}
390#endif
391
392#endif