3 * This file has no copyright assigned and is placed in the Public Domain.
4 * This file is a part of the mingw-runtime package.
5 * No warranty is given; refer to the file DISCLAIMER within the package.
7 * Definitions for memory and string functions.
14 /* All the headers include this file. */
18 * Define size_t, wchar_t and NULL
21 #define __need_wchar_t
25 #endif /* Not RC_INVOKED */
34 * Prototypes of the ANSI Standard C library string functions.
36 _CRTIMP
void* __cdecl __MINGW_NOTHROW
memchr (const void*, int, size_t) __MINGW_ATTRIB_PURE
;
37 _CRTIMP
int __cdecl __MINGW_NOTHROW
memcmp (const void*, const void*, size_t) __MINGW_ATTRIB_PURE
;
38 _CRTIMP
void* __cdecl __MINGW_NOTHROW
memcpy (void*, const void*, size_t);
39 _CRTIMP
void* __cdecl __MINGW_NOTHROW
memmove (void*, const void*, size_t);
40 _CRTIMP
void* __cdecl __MINGW_NOTHROW
memset (void*, int, size_t);
41 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strcat (char*, const char*);
42 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strchr (const char*, int) __MINGW_ATTRIB_PURE
;
43 _CRTIMP
int __cdecl __MINGW_NOTHROW
strcmp (const char*, const char*) __MINGW_ATTRIB_PURE
;
44 _CRTIMP
int __cdecl __MINGW_NOTHROW
strcoll (const char*, const char*); /* Compare using locale */
45 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strcpy (char*, const char*);
46 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
strcspn (const char*, const char*) __MINGW_ATTRIB_PURE
;
47 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strerror (int); /* NOTE: NOT an old name wrapper. */
49 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
strlen (const char*) __MINGW_ATTRIB_PURE
;
50 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strncat (char*, const char*, size_t);
51 _CRTIMP
int __cdecl __MINGW_NOTHROW
strncmp (const char*, const char*, size_t) __MINGW_ATTRIB_PURE
;
52 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strncpy (char*, const char*, size_t);
53 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strpbrk (const char*, const char*) __MINGW_ATTRIB_PURE
;
54 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strrchr (const char*, int) __MINGW_ATTRIB_PURE
;
55 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
strspn (const char*, const char*) __MINGW_ATTRIB_PURE
;
56 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strstr (const char*, const char*) __MINGW_ATTRIB_PURE
;
57 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strtok (char*, const char*);
58 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
strxfrm (char*, const char*, size_t);
60 #ifndef __STRICT_ANSI__
62 * Extra non-ANSI functions provided by the CRTDLL library
64 _CRTIMP
char* __cdecl __MINGW_NOTHROW
_strerror (const char *);
65 _CRTIMP
void* __cdecl __MINGW_NOTHROW
_memccpy (void*, const void*, int, size_t);
66 _CRTIMP
int __cdecl __MINGW_NOTHROW
_memicmp (const void*, const void*, size_t);
67 _CRTIMP
char* __cdecl __MINGW_NOTHROW
_strdup (const char*) __MINGW_ATTRIB_MALLOC
;
68 _CRTIMP
int __cdecl __MINGW_NOTHROW
_strcmpi (const char*, const char*);
69 _CRTIMP
int __cdecl __MINGW_NOTHROW
_stricmp (const char*, const char*);
70 _CRTIMP
int __cdecl __MINGW_NOTHROW
_stricoll (const char*, const char*);
71 _CRTIMP
char* __cdecl __MINGW_NOTHROW
_strlwr (char*);
72 _CRTIMP
int __cdecl __MINGW_NOTHROW
_strnicmp (const char*, const char*, size_t);
73 _CRTIMP
char* __cdecl __MINGW_NOTHROW
_strnset (char*, int, size_t);
74 _CRTIMP
char* __cdecl __MINGW_NOTHROW
_strrev (char*);
75 _CRTIMP
char* __cdecl __MINGW_NOTHROW
_strset (char*, int);
76 _CRTIMP
char* __cdecl __MINGW_NOTHROW
_strupr (char*);
77 _CRTIMP
void __cdecl __MINGW_NOTHROW
_swab (const char*, char*, size_t);
80 _CRTIMP
int __cdecl __MINGW_NOTHROW
_strncoll(const char*, const char*, size_t);
81 _CRTIMP
int __cdecl __MINGW_NOTHROW
_strnicoll(const char*, const char*, size_t);
86 * Non-underscored versions of non-ANSI functions. They live in liboldnames.a
87 * and provide a little extra portability. Also a few extra UNIX-isms like
90 _CRTIMP
void* __cdecl __MINGW_NOTHROW
memccpy (void*, const void*, int, size_t);
91 _CRTIMP
int __cdecl __MINGW_NOTHROW
memicmp (const void*, const void*, size_t);
92 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strdup (const char*) __MINGW_ATTRIB_MALLOC
;
93 _CRTIMP
int __cdecl __MINGW_NOTHROW
strcmpi (const char*, const char*);
94 _CRTIMP
int __cdecl __MINGW_NOTHROW
stricmp (const char*, const char*);
95 __CRT_INLINE
int __cdecl __MINGW_NOTHROW
strcasecmp (const char*, const char *);
96 __CRT_INLINE
int __cdecl __MINGW_NOTHROW
97 strcasecmp (const char * __sz1
, const char * __sz2
)
98 {return _stricmp (__sz1
, __sz2
);}
99 _CRTIMP
int __cdecl __MINGW_NOTHROW
stricoll (const char*, const char*);
100 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strlwr (char*);
101 _CRTIMP
int __cdecl __MINGW_NOTHROW
strnicmp (const char*, const char*, size_t);
102 __CRT_INLINE
int __cdecl __MINGW_NOTHROW
strncasecmp (const char *, const char *, size_t);
103 __CRT_INLINE
int __cdecl __MINGW_NOTHROW
104 strncasecmp (const char * __sz1
, const char * __sz2
, size_t __sizeMaxCompare
)
105 {return _strnicmp (__sz1
, __sz2
, __sizeMaxCompare
);}
106 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strnset (char*, int, size_t);
107 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strrev (char*);
108 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strset (char*, int);
109 _CRTIMP
char* __cdecl __MINGW_NOTHROW
strupr (char*);
111 _CRTIMP
void __cdecl __MINGW_NOTHROW
swab (const char*, char*, size_t);
113 #endif /* _NO_OLDNAMES */
115 #endif /* Not __STRICT_ANSI__ */
117 #ifndef _WSTRING_DEFINED
119 * Unicode versions of the standard calls.
120 * Also in wchar.h, where they belong according to ISO standard.
122 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcscat (wchar_t*, const wchar_t*);
123 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcschr (const wchar_t*, wchar_t);
124 _CRTIMP
int __cdecl __MINGW_NOTHROW
wcscmp (const wchar_t*, const wchar_t*);
125 _CRTIMP
int __cdecl __MINGW_NOTHROW
wcscoll (const wchar_t*, const wchar_t*);
126 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcscpy (wchar_t*, const wchar_t*);
127 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
wcscspn (const wchar_t*, const wchar_t*);
128 /* Note: _wcserror requires __MSVCRT_VERSION__ >= 0x0700. */
129 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
wcslen (const wchar_t*);
130 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsncat (wchar_t*, const wchar_t*, size_t);
131 _CRTIMP
int __cdecl __MINGW_NOTHROW
wcsncmp(const wchar_t*, const wchar_t*, size_t);
132 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsncpy(wchar_t*, const wchar_t*, size_t);
133 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcspbrk(const wchar_t*, const wchar_t*);
134 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsrchr(const wchar_t*, wchar_t);
135 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
wcsspn(const wchar_t*, const wchar_t*);
136 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsstr(const wchar_t*, const wchar_t*);
137 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcstok(wchar_t*, const wchar_t*);
138 _CRTIMP
size_t __cdecl __MINGW_NOTHROW
wcsxfrm(wchar_t*, const wchar_t*, size_t);
140 #ifndef __STRICT_ANSI__
142 * Unicode versions of non-ANSI string functions provided by CRTDLL.
145 /* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
146 #define _wcscmpi _wcsicmp
148 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
_wcsdup (const wchar_t*);
149 _CRTIMP
int __cdecl __MINGW_NOTHROW
_wcsicmp (const wchar_t*, const wchar_t*);
150 _CRTIMP
int __cdecl __MINGW_NOTHROW
_wcsicoll (const wchar_t*, const wchar_t*);
151 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
_wcslwr (wchar_t*);
152 _CRTIMP
int __cdecl __MINGW_NOTHROW
_wcsnicmp (const wchar_t*, const wchar_t*, size_t);
153 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
_wcsnset (wchar_t*, wchar_t, size_t);
154 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
_wcsrev (wchar_t*);
155 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
_wcsset (wchar_t*, wchar_t);
156 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
_wcsupr (wchar_t*);
159 _CRTIMP
int __cdecl __MINGW_NOTHROW
_wcsncoll(const wchar_t*, const wchar_t*, size_t);
160 _CRTIMP
int __cdecl __MINGW_NOTHROW
_wcsnicoll(const wchar_t*, const wchar_t*, size_t);
161 #if __MSVCRT_VERSION__ >= 0x0700
162 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
_wcserror(int);
163 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
__wcserror(const wchar_t*);
168 /* NOTE: There is no _wcscmpi, but this is for compatibility. */
169 int __cdecl __MINGW_NOTHROW
wcscmpi (const wchar_t * __ws1
, const wchar_t * __ws2
);
170 __CRT_INLINE
int __cdecl __MINGW_NOTHROW
171 wcscmpi (const wchar_t * __ws1
, const wchar_t * __ws2
)
172 {return _wcsicmp (__ws1
, __ws2
);}
173 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsdup (const wchar_t*);
174 _CRTIMP
int __cdecl __MINGW_NOTHROW
wcsicmp (const wchar_t*, const wchar_t*);
175 _CRTIMP
int __cdecl __MINGW_NOTHROW
wcsicoll (const wchar_t*, const wchar_t*);
176 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcslwr (wchar_t*);
177 _CRTIMP
int __cdecl __MINGW_NOTHROW
wcsnicmp (const wchar_t*, const wchar_t*, size_t);
178 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsnset (wchar_t*, wchar_t, size_t);
179 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsrev (wchar_t*);
180 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsset (wchar_t*, wchar_t);
181 _CRTIMP
wchar_t* __cdecl __MINGW_NOTHROW
wcsupr (wchar_t*);
182 #endif /* Not _NO_OLDNAMES */
184 #endif /* Not strict ANSI */
186 #define _WSTRING_DEFINED
187 #endif /* _WSTRING_DEFINED */
193 #endif /* Not RC_INVOKED */
195 #endif /* Not _STRING_H_ */