3064aaca484c3cacca6a40270b1c488d7fa8b110
[reactos.git] / reactos / include / crt / string.h
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_STRING
7 #define _INC_STRING
8
9 #include <crtdefs.h>
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 #ifndef _NLSCMP_DEFINED
16 #define _NLSCMP_DEFINED
17 #define _NLSCMPERROR 2147483647
18 #endif
19
20 #ifndef NULL
21 #ifdef __cplusplus
22 #define NULL 0
23 #else
24 #define NULL ((void *)0)
25 #endif
26 #endif
27
28 #ifndef _CRT_MEMORY_DEFINED
29 #define _CRT_MEMORY_DEFINED
30
31 _CRTIMP
32 void*
33 __cdecl
34 _memccpy(
35 _Out_writes_bytes_opt_(_MaxCount) void *_Dst,
36 _In_ const void *_Src,
37 _In_ int _Val,
38 _In_ size_t _MaxCount);
39
40 _Must_inspect_result_
41 _CRTIMP
42 _CONST_RETURN
43 void*
44 __cdecl
45 memchr(
46 _In_reads_bytes_opt_(_MaxCount) const void *_Buf,
47 _In_ int _Val,
48 _In_ size_t _MaxCount);
49
50 _Must_inspect_result_
51 _CRTIMP
52 int
53 __cdecl
54 _memicmp(
55 _In_reads_bytes_opt_(_Size) const void *_Buf1,
56 _In_reads_bytes_opt_(_Size) const void *_Buf2,
57 _In_ size_t _Size);
58
59 _Must_inspect_result_
60 _CRTIMP
61 int
62 __cdecl
63 _memicmp_l(
64 _In_reads_bytes_opt_(_Size) const void *_Buf1,
65 _In_reads_bytes_opt_(_Size) const void *_Buf2,
66 _In_ size_t _Size,
67 _In_opt_ _locale_t _Locale);
68
69 _Must_inspect_result_
70 int
71 __cdecl
72 memcmp(
73 _In_reads_bytes_(_Size) const void *_Buf1,
74 _In_reads_bytes_(_Size) const void *_Buf2,
75 _In_ size_t _Size);
76
77 _Post_equal_to_(_Dst)
78 _At_buffer_((unsigned char*)_Dst,
79 _Iter_,
80 _MaxCount,
81 _Post_satisfies_(((unsigned char*)_Dst)[_Iter_] == ((unsigned char*)_Src)[_Iter_]))
82 _CRT_INSECURE_DEPRECATE_MEMORY(memcpy_s)
83 void*
84 __cdecl
85 memcpy(
86 _Out_writes_bytes_all_(_MaxCount) void *_Dst,
87 _In_reads_bytes_(_MaxCount) const void *_Src,
88 _In_ size_t _MaxCount);
89
90 _Post_equal_to_(_Dst)
91 _At_buffer_((unsigned char*)_Dst,
92 _Iter_,
93 _Size,
94 _Post_satisfies_(((unsigned char*)_Dst)[_Iter_] == _Val))
95 void*
96 __cdecl
97 memset(
98 _Out_writes_bytes_all_(_Size) void *_Dst,
99 _In_ int _Val,
100 _In_ size_t _Size);
101
102 #ifndef NO_OLDNAMES
103
104 _CRTIMP
105 _CRT_NONSTDC_DEPRECATE(_memccpy)
106 void*
107 __cdecl
108 memccpy(
109 _Out_writes_bytes_opt_(_Size) void *_Dst,
110 _In_reads_bytes_opt_(_Size) const void *_Src,
111 _In_ int _Val,
112 _In_ size_t _Size);
113
114 _Check_return_
115 _CRTIMP
116 _CRT_NONSTDC_DEPRECATE(_memicmp)
117 int
118 __cdecl
119 memicmp(
120 _In_reads_bytes_opt_(_Size) const void *_Buf1,
121 _In_reads_bytes_opt_(_Size) const void *_Buf2,
122 _In_ size_t _Size);
123
124 #endif /* NO_OLDNAMES */
125
126 #endif /* _CRT_MEMORY_DEFINED */
127
128 char*
129 __cdecl
130 _strset(
131 _Inout_z_ char *_Str,
132 _In_ int _Val);
133
134 char*
135 __cdecl
136 strcpy(
137 _Out_writes_z_(_String_length_(_Source) + 1) char *_Dest,
138 _In_z_ const char *_Source);
139
140 char*
141 __cdecl
142 strcat(
143 _Inout_updates_z_(_String_length_(_Dest) + _String_length_(_Source) + 1) char *_Dest,
144 _In_z_ const char *_Source);
145
146 _Check_return_
147 int
148 __cdecl
149 strcmp(
150 _In_z_ const char *_Str1,
151 _In_z_ const char *_Str2);
152
153 size_t
154 __cdecl
155 strlen(
156 _In_z_ const char *_Str);
157
158 _When_(_MaxCount > _String_length_(_Str),
159 _Post_satisfies_(return == _String_length_(_Str)))
160 _When_(_MaxCount <= _String_length_(_Str),
161 _Post_satisfies_(return == _MaxCount))
162 _CRTIMP
163 size_t
164 __cdecl
165 strnlen(
166 _In_reads_or_z_(_MaxCount) const char *_Str,
167 _In_ size_t _MaxCount);
168
169 _CRT_INSECURE_DEPRECATE_MEMORY(memmove_s)
170 void*
171 __cdecl
172 memmove(
173 _Out_writes_bytes_all_opt_(_MaxCount) void *_Dst,
174 _In_reads_bytes_opt_(_MaxCount) const void *_Src,
175 _In_ size_t _MaxCount);
176
177 _Check_return_
178 _CRTIMP
179 char*
180 __cdecl
181 _strdup(
182 _In_opt_z_ const char *_Src);
183
184 _Check_return_
185 _CRTIMP
186 _CONST_RETURN
187 char*
188 __cdecl
189 strchr(
190 _In_z_ const char *_Str,
191 _In_ int _Val);
192
193 _Check_return_
194 _CRTIMP
195 int
196 __cdecl
197 _stricmp(
198 _In_z_ const char *_Str1,
199 _In_z_ const char *_Str2);
200
201 _Check_return_
202 _CRTIMP
203 int
204 __cdecl
205 _strcmpi(
206 _In_z_ const char *_Str1,
207 _In_z_ const char *_Str2);
208
209 _Check_return_
210 _CRTIMP
211 int
212 __cdecl
213 _stricmp_l(
214 _In_z_ const char *_Str1,
215 _In_z_ const char *_Str2,
216 _In_opt_ _locale_t _Locale);
217
218 _Check_return_
219 _CRTIMP
220 int
221 __cdecl
222 strcoll(
223 _In_z_ const char *_Str1,
224 _In_z_ const char *_Str2);
225
226 _Check_return_
227 _CRTIMP
228 int
229 __cdecl
230 _strcoll_l(
231 _In_z_ const char *_Str1,
232 _In_z_ const char *_Str2,
233 _In_opt_ _locale_t _Locale);
234
235 _Check_return_
236 _CRTIMP
237 int
238 __cdecl
239 _stricoll(
240 _In_z_ const char *_Str1,
241 _In_z_ const char *_Str2);
242
243 _Check_return_
244 _CRTIMP
245 int
246 __cdecl
247 _stricoll_l(
248 _In_z_ const char *_Str1,
249 _In_z_ const char *_Str2,
250 _In_opt_ _locale_t _Locale);
251
252 _Check_return_
253 _CRTIMP
254 int
255 __cdecl
256 _strncoll(
257 _In_z_ const char *_Str1,
258 _In_z_ const char *_Str2,
259 _In_ size_t _MaxCount);
260
261 _Check_return_
262 _CRTIMP
263 int
264 __cdecl
265 _strncoll_l(
266 _In_z_ const char *_Str1,
267 _In_z_ const char *_Str2,
268 _In_ size_t _MaxCount,
269 _In_opt_ _locale_t _Locale);
270
271 _Check_return_
272 _CRTIMP
273 int
274 __cdecl
275 _strnicoll(
276 _In_z_ const char *_Str1,
277 _In_z_ const char *_Str2,
278 _In_ size_t _MaxCount);
279
280 _Check_return_
281 _CRTIMP
282 int
283 __cdecl
284 _strnicoll_l(
285 _In_z_ const char *_Str1,
286 _In_z_ const char *_Str2,
287 _In_ size_t _MaxCount,
288 _In_opt_ _locale_t _Locale);
289
290 _Check_return_
291 _CRTIMP
292 size_t
293 __cdecl
294 strcspn(
295 _In_z_ const char *_Str,
296 _In_z_ const char *_Control);
297
298 _Check_return_
299 _CRTIMP
300 _CRT_INSECURE_DEPRECATE(_strerror_s)
301 char*
302 __cdecl
303 _strerror(
304 _In_opt_z_ const char *_ErrMsg);
305
306 _Check_return_
307 _CRTIMP
308 _CRT_INSECURE_DEPRECATE(strerror_s)
309 char*
310 __cdecl
311 strerror(
312 _In_ int);
313
314 _CRTIMP
315 char*
316 __cdecl
317 _strlwr(
318 _Inout_z_ char *_String);
319
320 char*
321 strlwr_l(
322 char *_String,
323 _locale_t _Locale);
324
325 char*
326 __cdecl
327 strncat(
328 char *_Dest,
329 const char *_Source,
330 size_t _Count);
331
332 _Check_return_
333 int
334 __cdecl
335 strncmp(
336 _In_reads_or_z_(_MaxCount) const char *_Str1,
337 _In_reads_or_z_(_MaxCount) const char *_Str2,
338 _In_ size_t _MaxCount);
339
340 _Check_return_
341 _CRTIMP
342 int
343 __cdecl
344 _strnicmp(
345 _In_reads_or_z_(_MaxCount) const char *_Str1,
346 _In_reads_or_z_(_MaxCount) const char *_Str2,
347 _In_ size_t _MaxCount);
348
349 _Check_return_
350 _CRTIMP
351 int
352 __cdecl
353 _strnicmp_l(
354 _In_reads_or_z_(_MaxCount) const char *_Str1,
355 _In_reads_or_z_(_MaxCount) const char *_Str2,
356 _In_ size_t _MaxCount,
357 _In_opt_ _locale_t _Locale);
358
359 char*
360 __cdecl
361 strncpy(
362 char *_Dest,
363 const char *_Source,
364 size_t _Count);
365
366 _CRTIMP
367 _CRT_INSECURE_DEPRECATE_CORE(_strnset_s)
368 char*
369 __cdecl
370 _strnset(
371 char *_Str,
372 int _Val,
373 size_t _MaxCount);
374
375 _Check_return_
376 _CRTIMP
377 _CONST_RETURN
378 char*
379 __cdecl
380 strpbrk(
381 _In_z_ const char *_Str,
382 _In_z_ const char *_Control);
383
384 _Check_return_
385 _CRTIMP
386 _CONST_RETURN
387 char*
388 __cdecl
389 strrchr(
390 _In_z_ const char *_Str,
391 _In_ int _Ch);
392
393 _CRTIMP
394 char*
395 __cdecl
396 _strrev(
397 _Inout_z_ char *_Str);
398
399 _Check_return_
400 _CRTIMP
401 size_t
402 __cdecl
403 strspn(
404 _In_z_ const char *_Str,
405 _In_z_ const char *_Control);
406
407 _Check_return_
408 _CRTIMP
409 _CONST_RETURN
410 char*
411 __cdecl
412 strstr(
413 _In_z_ const char *_Str,
414 _In_z_ const char *_SubStr);
415
416 _Check_return_
417 _CRTIMP
418 _CRT_INSECURE_DEPRECATE_CORE(strtok_s)
419 char*
420 __cdecl
421 strtok(
422 _Inout_opt_z_ char *_Str,
423 _In_z_ const char *_Delim);
424
425 _CRTIMP
426 char*
427 __cdecl
428 _strupr(
429 _Inout_z_ char *_String);
430
431 _CRTIMP
432 char*
433 _strupr_l(
434 char *_String,
435 _locale_t _Locale);
436
437 _Check_return_opt_
438 _CRTIMP
439 size_t
440 __cdecl
441 strxfrm(
442 _Out_writes_opt_(_MaxCount) _Post_maybez_ char *_Dst,
443 _In_z_ const char *_Src,
444 _In_ size_t _MaxCount);
445
446 _Check_return_opt_
447 _CRTIMP
448 size_t
449 __cdecl
450 _strxfrm_l(
451 _Out_writes_opt_(_MaxCount) _Post_maybez_ char *_Dst,
452 _In_z_ const char *_Src,
453 _In_ size_t _MaxCount,
454 _In_opt_ _locale_t _Locale);
455
456 #if __STDC_WANT_SECURE_LIB__
457
458 _Check_return_wat_
459 _CRTIMP
460 errno_t
461 __cdecl
462 _strset_s(
463 _Inout_updates_z_(_DstSize) char *_Dst,
464 _In_ size_t _DstSize,
465 _In_ int _Value);
466
467 _Check_return_wat_
468 _CRTIMP
469 errno_t
470 __cdecl
471 _strerror_s(
472 _Out_writes_z_(_SizeInBytes) char *_Buf,
473 _In_ size_t _SizeInBytes,
474 _In_opt_z_ const char *_ErrMsg);
475
476 _Check_return_wat_
477 _CRTIMP
478 errno_t
479 __cdecl
480 _strlwr_s(
481 _Inout_updates_z_(_Size) char *_Str,
482 _In_ size_t _Size);
483
484 _Check_return_wat_
485 _CRTIMP
486 errno_t
487 __cdecl
488 _strlwr_s_l(
489 _Inout_updates_z_(_Size) char *_Str,
490 _In_ size_t _Size,
491 _In_opt_ _locale_t _Locale);
492
493 _Check_return_wat_
494 _CRTIMP
495 errno_t
496 __cdecl
497 _strnset_s(
498 _Inout_updates_z_(_Size) char *_Str,
499 _In_ size_t _Size,
500 _In_ int _Val,
501 _In_ size_t _MaxCount);
502
503 _Check_return_wat_
504 _CRTIMP
505 errno_t
506 __cdecl
507 _strupr_s(
508 _Inout_updates_z_(_Size) char *_Str,
509 _In_ size_t _Size);
510
511 _Check_return_wat_
512 _CRTIMP
513 errno_t
514 __cdecl
515 _strupr_s_l(
516 _Inout_updates_z_(_Size) char *_Str,
517 _In_ size_t _Size,
518 _locale_t _Locale);
519
520 _Check_return_wat_
521 _CRTIMP
522 errno_t
523 __cdecl
524 strcpy_s(
525 _Out_writes_z_(_Size) char *_Dst,
526 _In_ size_t _Size,
527 _In_z_ const char *_Src);
528
529 _Check_return_wat_
530 _CRTIMP
531 errno_t
532 __cdecl
533 strcat_s(
534 _Inout_updates_z_(_Size) char *_Dst,
535 _In_ size_t _Size,
536 _In_z_ const char *_Src);
537
538 #endif /* __STDC_WANT_SECURE_LIB__ */
539
540 #ifndef NO_OLDNAMES
541
542 _Check_return_
543 _CRTIMP
544 _CRT_NONSTDC_DEPRECATE(_strdup)
545 char*
546 __cdecl
547 strdup(
548 _In_opt_z_ const char *_Src);
549
550 _Check_return_
551 _CRTIMP
552 _CRT_NONSTDC_DEPRECATE(_strcmpi)
553 int
554 __cdecl
555 strcmpi(
556 _In_z_ const char *_Str1,
557 _In_z_ const char *_Str2);
558
559 _Check_return_
560 _CRTIMP
561 _CRT_NONSTDC_DEPRECATE(_stricmp)
562 int
563 __cdecl
564 stricmp(
565 _In_z_ const char *_Str1,
566 _In_z_ const char *_Str2);
567
568 _CRTIMP
569 _CRT_NONSTDC_DEPRECATE(_strlwr)
570 char*
571 __cdecl
572 strlwr(
573 _Inout_z_ char *_Str);
574
575 _Check_return_
576 _CRTIMP
577 _CRT_NONSTDC_DEPRECATE(_strnicmp)
578 int
579 __cdecl
580 strnicmp(
581 _In_z_ const char *_Str1,
582 _In_z_ const char *_Str,
583 _In_ size_t _MaxCount);
584
585 // __CRT_INLINE int __cdecl strncasecmp (const char *__sz1, const char *__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, __sizeMaxCompare); }
586 // __CRT_INLINE int __cdecl strcasecmp (const char *__sz1, const char *__sz2) { return _stricmp (__sz1, __sz2); }
587
588 _CRTIMP
589 _CRT_NONSTDC_DEPRECATE(_strnset)
590 char*
591 __cdecl
592 strnset(
593 _Inout_updates_z_(_MaxCount) char *_Str,
594 _In_ int _Val,
595 _In_ size_t _MaxCount);
596
597 _CRTIMP
598 _CRT_NONSTDC_DEPRECATE(_strrev)
599 char*
600 __cdecl
601 strrev(
602 _Inout_z_ char *_Str);
603
604 _CRTIMP
605 _CRT_NONSTDC_DEPRECATE(_strset)
606 char*
607 __cdecl
608 strset(
609 _Inout_z_ char *_Str,
610 _In_ int _Val);
611
612 _CRTIMP
613 _CRT_NONSTDC_DEPRECATE(_strupr)
614 char*
615 __cdecl
616 strupr(
617 _Inout_z_ char *_Str);
618
619 #endif /* NO_OLDNAMES */
620
621 #ifndef _WSTRING_DEFINED
622 #define _WSTRING_DEFINED
623
624 _Check_return_
625 _CRTIMP
626 wchar_t*
627 __cdecl
628 _wcsdup(
629 _In_z_ const wchar_t *_Str);
630
631 _CRTIMP
632 _CRT_INSECURE_DEPRECATE(wcsat_s)
633 wchar_t*
634 __cdecl
635 wcscat(
636 _Inout_updates_z_(_String_length_(_Dest) + _String_length_(_Source) + 1) wchar_t *_Dest,
637 _In_z_ const wchar_t *_Source);
638
639 _Check_return_
640 _When_(return != 0, _Ret_range_(_Str, _Str + _String_length_(_Str) - 1))
641 _CRTIMP
642 _CONST_RETURN
643 wchar_t*
644 __cdecl
645 wcschr(
646 _In_z_ const wchar_t *_Str,
647 wchar_t _Ch);
648
649 _Check_return_
650 _CRTIMP
651 int
652 __cdecl
653 wcscmp(
654 _In_z_ const wchar_t *_Str1,
655 _In_z_ const wchar_t *_Str2);
656
657 _CRTIMP
658 _CRT_INSECURE_DEPRECATE(wcscpy_s)
659 wchar_t*
660 __cdecl
661 wcscpy(
662 _Out_writes_z_(_String_length_(_Source) + 1) wchar_t *_Dest,
663 _In_z_ const wchar_t *_Source);
664
665 _Check_return_
666 _CRTIMP
667 size_t
668 __cdecl
669 wcscspn(
670 _In_z_ const wchar_t *_Str,
671 _In_z_ const wchar_t *_Control);
672
673 _CRTIMP
674 wchar_t*
675 wcsncat(
676 wchar_t *_Dest,
677 const wchar_t *_Source,
678 size_t _Count);
679
680 _Ret_range_(==,_String_length_(_Str))
681 _CRTIMP
682 size_t
683 __cdecl
684 wcslen(
685 _In_z_ const wchar_t *_Str);
686
687 _When_(_MaxCount > _String_length_(_Src),
688 _Post_satisfies_(return == _String_length_(_Src)))
689 _When_(_MaxCount <= _String_length_(_Src),
690 _Post_satisfies_(return == _MaxCount))
691 _CRTIMP
692 _CRT_INSECURE_DEPRECATE(wcsnlen_s)
693 size_t
694 __cdecl
695 wcsnlen(
696 _In_reads_or_z_(_MaxCount) const wchar_t *_Src,
697 _In_ size_t _MaxCount);
698
699 _Check_return_
700 _CRTIMP
701 int
702 __cdecl
703 wcsncmp(
704 _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
705 _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
706 _In_ size_t _MaxCount);
707
708 _CRTIMP
709 _CRT_INSECURE_DEPRECATE(wcsncpy_s)
710 wchar_t*
711 __cdecl
712 wcsncpy(
713 wchar_t *_Dest,
714 const wchar_t *_Source,
715 size_t _Count);
716
717 _Check_return_
718 _CRTIMP
719 _CONST_RETURN
720 wchar_t*
721 __cdecl
722 wcspbrk(
723 _In_z_ const wchar_t *_Str,
724 _In_z_ const wchar_t *_Control);
725
726 _Check_return_
727 _CRTIMP
728 _CONST_RETURN
729 wchar_t*
730 __cdecl
731 wcsrchr(
732 _In_z_ const wchar_t *_Str,
733 _In_ wchar_t _Ch);
734
735 _Check_return_
736 _CRTIMP
737 size_t
738 __cdecl
739 wcsspn(
740 _In_z_ const wchar_t *_Str,
741 _In_z_ const wchar_t *_Control);
742
743 _When_(return != 0,
744 _Ret_range_(_Str, _Str + _String_length_(_Str) - 1))
745 _CRTIMP
746 _CONST_RETURN
747 wchar_t*
748 __cdecl
749 wcsstr(
750 _In_z_ const wchar_t *_Str,
751 _In_z_ const wchar_t *_SubStr);
752
753 _Check_return_
754 _CRTIMP
755 _CRT_INSECURE_DEPRECATE_CORE(wcstok_s)
756 wchar_t*
757 __cdecl
758 wcstok(
759 _Inout_opt_z_ wchar_t *_Str,
760 _In_z_ const wchar_t *_Delim);
761
762 _Check_return_
763 _CRTIMP
764 _CRT_INSECURE_DEPRECATE(_wcserror_s)
765 wchar_t*
766 __cdecl
767 _wcserror(
768 _In_ int _ErrNum);
769
770 _Check_return_
771 _CRTIMP
772 _CRT_INSECURE_DEPRECATE(__wcserror_s)
773 wchar_t*
774 __cdecl
775 __wcserror(
776 _In_opt_z_ const wchar_t *_Str);
777
778 _Check_return_
779 _CRTIMP
780 int
781 __cdecl
782 _wcsicmp(
783 _In_z_ const wchar_t *_Str1,
784 _In_z_ const wchar_t *_Str2);
785
786 _Check_return_
787 _CRTIMP
788 int
789 __cdecl
790 _wcsicmp_l(
791 _In_z_ const wchar_t *_Str1,
792 _In_z_ const wchar_t *_Str2,
793 _In_opt_ _locale_t _Locale);
794
795 _Check_return_
796 _CRTIMP
797 int
798 __cdecl
799 _wcsnicmp(
800 _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
801 _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
802 _In_ size_t _MaxCount);
803
804 _Check_return_
805 _CRTIMP
806 int
807 __cdecl
808 _wcsnicmp_l(
809 _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
810 _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
811 _In_ size_t _MaxCount,
812 _In_opt_ _locale_t _Locale);
813
814 _CRTIMP
815 _CRT_INSECURE_DEPRECATE_CORE(_wcsnset_s)
816 wchar_t*
817 __cdecl
818 _wcsnset(
819 wchar_t *_Str,
820 wchar_t _Val,
821 size_t _MaxCount);
822
823 _CRTIMP
824 wchar_t*
825 __cdecl
826 _wcsrev(
827 _Inout_z_ wchar_t *_Str);
828
829 _CRTIMP
830 _CRT_INSECURE_DEPRECATE_CORE(_wcsset_s)
831 wchar_t*
832 __cdecl
833 _wcsset(
834 wchar_t *_Str,
835 wchar_t _Val);
836
837 _CRTIMP
838 wchar_t*
839 __cdecl
840 _wcslwr(
841 _Inout_z_ wchar_t *_String);
842
843 _CRTIMP
844 wchar_t*
845 _wcslwr_l(
846 wchar_t *_String,
847 _locale_t _Locale);
848
849 _CRTIMP
850 wchar_t*
851 __cdecl
852 _wcsupr(
853 _Inout_z_ wchar_t *_String);
854
855 _CRTIMP
856 wchar_t*
857 _wcsupr_l(
858 wchar_t *_String,
859 _locale_t _Locale);
860
861 _Check_return_opt_
862 _CRTIMP
863 size_t
864 __cdecl
865 wcsxfrm(
866 _Out_writes_opt_(_MaxCount) _Post_maybez_ wchar_t *_Dst,
867 _In_z_ const wchar_t *_Src,
868 _In_ size_t _MaxCount);
869
870 _Check_return_opt_
871 _CRTIMP
872 size_t
873 __cdecl
874 _wcsxfrm_l(
875 _Out_writes_opt_(_MaxCount) _Post_maybez_ wchar_t *_Dst,
876 _In_z_ const wchar_t *_Src,
877 _In_ size_t _MaxCount,
878 _In_opt_ _locale_t _Locale);
879
880 _Check_return_
881 _CRTIMP
882 int
883 __cdecl
884 wcscoll(
885 _In_z_ const wchar_t *_Str1,
886 _In_z_ const wchar_t *_Str2);
887
888 _Check_return_
889 _CRTIMP
890 int
891 __cdecl
892 _wcscoll_l(
893 _In_z_ const wchar_t *_Str1,
894 _In_z_ const wchar_t *_Str2,
895 _In_opt_ _locale_t _Locale);
896
897 _Check_return_
898 _CRTIMP
899 int
900 __cdecl
901 _wcsicoll(
902 _In_z_ const wchar_t *_Str1,
903 _In_z_ const wchar_t *_Str2);
904
905 _Check_return_
906 _CRTIMP
907 int
908 __cdecl
909 _wcsicoll_l(
910 _In_z_ const wchar_t *_Str1,
911 _In_z_ const wchar_t *_Str2,
912 _In_opt_ _locale_t _Locale);
913
914 _Check_return_
915 _CRTIMP
916 int
917 __cdecl
918 _wcsncoll(
919 _In_z_ const wchar_t *_Str1,
920 _In_z_ const wchar_t *_Str2,
921 _In_ size_t _MaxCount);
922
923 _Check_return_
924 _CRTIMP
925 int
926 __cdecl
927 _wcsncoll_l(
928 _In_z_ const wchar_t *_Str1,
929 _In_z_ const wchar_t *_Str2,
930 _In_ size_t _MaxCount,
931 _In_opt_ _locale_t _Locale);
932
933 _Check_return_
934 _CRTIMP
935 int
936 __cdecl
937 _wcsnicoll(
938 _In_z_ const wchar_t *_Str1,
939 _In_z_ const wchar_t *_Str2,
940 _In_ size_t _MaxCount);
941
942 _Check_return_
943 _CRTIMP
944 int
945 __cdecl
946 _wcsnicoll_l(
947 _In_z_ const wchar_t *_Str1,
948 _In_z_ const wchar_t *_Str2,
949 _In_ size_t _MaxCount,
950 _In_opt_ _locale_t _Locale);
951
952 #if __STDC_WANT_SECURE_LIB__
953
954 _CRTIMP
955 errno_t
956 __cdecl
957 wcsat_s(
958 wchar_t *Dest,
959 size_t SizeInWords,
960 const wchar_t *_Source);
961
962 _Check_return_wat_
963 _CRTIMP
964 errno_t
965 __cdecl
966 wcscpy_s(
967 _Out_writes_z_(SizeInWords) wchar_t *Dest,
968 _In_ size_t SizeInWords,
969 _In_z_ const wchar_t *_Source);
970
971 _CRTIMP
972 errno_t
973 __cdecl
974 wcsnlen_s(
975 wchar_t **_Src,
976 size_t _MaxCount);
977
978 _Check_return_wat_
979 _CRTIMP
980 errno_t
981 __cdecl
982 wcsncpy_s(
983 _Out_writes_z_(_DstSizeInChars) wchar_t *_Dst,
984 _In_ size_t _DstSizeInChars,
985 _In_z_ const wchar_t *_Src,
986 _In_ size_t _MaxCount);
987
988 _Check_return_wat_
989 _CRTIMP
990 errno_t
991 __cdecl
992 _wcserror_s(
993 _Out_writes_opt_z_(_SizeInWords) wchar_t *_Buf,
994 _In_ size_t _SizeInWords,
995 _In_ int _ErrNum);
996
997 _Check_return_wat_
998 _CRTIMP
999 errno_t
1000 __cdecl
1001 __wcserror_s(
1002 _Out_writes_opt_z_(_SizeInWords) wchar_t *_Buffer,
1003 _In_ size_t _SizeInWords,
1004 _In_z_ const wchar_t *_ErrMsg);
1005
1006 _Check_return_wat_
1007 _CRTIMP
1008 errno_t
1009 __cdecl
1010 _wcsnset_s(
1011 _Inout_updates_z_(_DstSizeInWords) wchar_t *_Dst,
1012 _In_ size_t _DstSizeInWords,
1013 _In_ wchar_t _Val,
1014 _In_ size_t _MaxCount);
1015
1016 _Check_return_wat_
1017 _CRTIMP
1018 errno_t
1019 __cdecl
1020 _wcsset_s(
1021 _Inout_updates_z_(_SizeInWords) wchar_t *_Str,
1022 _In_ size_t _SizeInWords,
1023 _In_ wchar_t _Val);
1024
1025 _Check_return_wat_
1026 _CRTIMP
1027 errno_t
1028 __cdecl
1029 _wcslwr_s(
1030 _Inout_updates_z_(_SizeInWords) wchar_t *_Str,
1031 _In_ size_t _SizeInWords);
1032
1033 _Check_return_wat_
1034 _CRTIMP
1035 errno_t
1036 __cdecl
1037 _wcslwr_s_l(
1038 _Inout_updates_z_(_SizeInWords) wchar_t *_Str,
1039 _In_ size_t _SizeInWords,
1040 _In_opt_ _locale_t _Locale);
1041
1042 _Check_return_wat_
1043 _CRTIMP
1044 errno_t
1045 __cdecl
1046 _wcsupr_s(
1047 _Inout_updates_z_(_Size) wchar_t *_Str,
1048 _In_ size_t _Size);
1049
1050 _Check_return_wat_
1051 _CRTIMP
1052 errno_t
1053 __cdecl
1054 _wcsupr_s_l(
1055 _Inout_updates_z_(_Size) wchar_t *_Str,
1056 _In_ size_t _Size,
1057 _In_opt_ _locale_t _Locale);
1058
1059 #endif /* __STDC_WANT_SECURE_LIB__ */
1060
1061 #ifndef NO_OLDNAMES
1062
1063 _Check_return_
1064 _CRTIMP
1065 _CRT_NONSTDC_DEPRECATE(_wcsdup)
1066 wchar_t*
1067 __cdecl
1068 wcsdup(
1069 _In_z_ const wchar_t *_Str);
1070
1071 #define wcswcs wcsstr
1072
1073 _Check_return_
1074 _CRTIMP
1075 _CRT_NONSTDC_DEPRECATE(_wcsicmp)
1076 int
1077 __cdecl
1078 wcsicmp(
1079 _In_z_ const wchar_t *_Str1,
1080 _In_z_ const wchar_t *_Str2);
1081
1082 _Check_return_
1083 _CRTIMP
1084 _CRT_NONSTDC_DEPRECATE(_wcsnicmp)
1085 int
1086 __cdecl
1087 wcsnicmp(
1088 _In_reads_or_z_(_MaxCount) const wchar_t *_Str1,
1089 _In_reads_or_z_(_MaxCount) const wchar_t *_Str2,
1090 _In_ size_t _MaxCount);
1091
1092 _CRTIMP
1093 _CRT_NONSTDC_DEPRECATE(_wcsnset)
1094 wchar_t*
1095 __cdecl
1096 wcsnset(
1097 _Inout_updates_z_(_MaxCount) wchar_t *_Str,
1098 _In_ wchar_t _Val,
1099 _In_ size_t _MaxCount);
1100
1101 _CRTIMP
1102 _CRT_NONSTDC_DEPRECATE(_wcsrev)
1103 wchar_t*
1104 __cdecl
1105 wcsrev(
1106 _Inout_z_ wchar_t *_Str);
1107
1108 _CRTIMP
1109 _CRT_NONSTDC_DEPRECATE(_wcsset)
1110 wchar_t*
1111 __cdecl
1112 wcsset(
1113 _Inout_z_ wchar_t *_Str,
1114 wchar_t _Val);
1115
1116 _CRTIMP
1117 _CRT_NONSTDC_DEPRECATE(_wcslwr)
1118 wchar_t*
1119 __cdecl
1120 wcslwr(
1121 _Inout_z_ wchar_t *_Str);
1122
1123 _CRTIMP
1124 _CRT_NONSTDC_DEPRECATE(_wcsupr)
1125 wchar_t*
1126 __cdecl
1127 wcsupr(
1128 _Inout_z_ wchar_t *_Str);
1129
1130 _Check_return_
1131 _CRTIMP
1132 _CRT_NONSTDC_DEPRECATE(_wcsicoll)
1133 int
1134 __cdecl
1135 wcsicoll(
1136 _In_z_ const wchar_t *_Str1,
1137 _In_z_ const wchar_t *_Str2);
1138
1139 #endif /* NO_OLDNAMES */
1140
1141 #endif /* !_WSTRING_DEFINED */
1142
1143 #ifdef __cplusplus
1144 }
1145 #endif
1146
1147 // HACK
1148 #define strcasecmp _stricmp
1149 #define strncasecmp _strnicmp
1150 #define stricmp _stricmp
1151 #define wcsicmp _wcsicmp
1152
1153 #include <sec_api/string_s.h>
1154 #endif