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
memchr (const void*, int, size_t) __MINGW_ATTRIB_PURE
;
37 _CRTIMP
int __cdecl
memcmp (const void*, const void*, size_t) __MINGW_ATTRIB_PURE
;
38 _CRTIMP
void* __cdecl
memcpy (void*, const void*, size_t);
39 _CRTIMP
void* __cdecl
memmove (void*, const void*, size_t);
40 _CRTIMP
void* __cdecl
memset (void*, int, size_t);
41 _CRTIMP
char* __cdecl
strcat (char*, const char*);
42 _CRTIMP
char* __cdecl
strchr (const char*, int) __MINGW_ATTRIB_PURE
;
43 _CRTIMP
int __cdecl
strcmp (const char*, const char*) __MINGW_ATTRIB_PURE
;
44 _CRTIMP
int __cdecl
strcoll (const char*, const char*); /* Compare using locale */
45 _CRTIMP
char* __cdecl
strcpy (char*, const char*);
46 _CRTIMP
size_t __cdecl
strcspn (const char*, const char*) __MINGW_ATTRIB_PURE
;
47 _CRTIMP
char* __cdecl
strerror (int); /* NOTE: NOT an old name wrapper. */
49 _CRTIMP
size_t __cdecl
strlen (const char*) __MINGW_ATTRIB_PURE
;
50 _CRTIMP
char* __cdecl
strncat (char*, const char*, size_t);
51 _CRTIMP
int __cdecl
strncmp (const char*, const char*, size_t) __MINGW_ATTRIB_PURE
;
52 _CRTIMP
char* __cdecl
strncpy (char*, const char*, size_t);
53 _CRTIMP
char* __cdecl
strpbrk (const char*, const char*) __MINGW_ATTRIB_PURE
;
54 _CRTIMP
char* __cdecl
strrchr (const char*, int) __MINGW_ATTRIB_PURE
;
55 _CRTIMP
size_t __cdecl
strspn (const char*, const char*) __MINGW_ATTRIB_PURE
;
56 _CRTIMP
char* __cdecl
strstr (const char*, const char*) __MINGW_ATTRIB_PURE
;
57 _CRTIMP
char* __cdecl
strtok (char*, const char*);
58 _CRTIMP
size_t __cdecl
strxfrm (char*, const char*, size_t);
60 #ifndef __STRICT_ANSI__
62 * Extra non-ANSI functions provided by the CRTDLL library
64 _CRTIMP
char* __cdecl
_strerror (const char *);
65 _CRTIMP
void* __cdecl
_memccpy (void*, const void*, int, size_t);
66 _CRTIMP
int __cdecl
_memicmp (const void*, const void*, size_t);
67 _CRTIMP
char* __cdecl
_strdup (const char*) __MINGW_ATTRIB_MALLOC
;
68 _CRTIMP
int __cdecl
_strcmpi (const char*, const char*);
69 _CRTIMP
int __cdecl
_stricmp (const char*, const char*);
70 _CRTIMP
int __cdecl
_stricoll (const char*, const char*);
71 _CRTIMP
char* __cdecl
_strlwr (char*);
72 _CRTIMP
int __cdecl
_strnicmp (const char*, const char*, size_t);
73 _CRTIMP
char* __cdecl
_strnset (char*, int, size_t);
74 _CRTIMP
char* __cdecl
_strrev (char*);
75 _CRTIMP
char* __cdecl
_strset (char*, int);
76 _CRTIMP
char* __cdecl
_strupr (char*);
77 _CRTIMP
void __cdecl
_swab (const char*, char*, size_t);
80 _CRTIMP
int __cdecl
_strncoll(const char*, const char*, size_t);
81 _CRTIMP
int __cdecl
_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
memccpy (void*, const void*, int, size_t);
91 _CRTIMP
int __cdecl
memicmp (const void*, const void*, size_t);
92 _CRTIMP
char* __cdecl
strdup (const char*) __MINGW_ATTRIB_MALLOC
;
93 _CRTIMP
int __cdecl
strcmpi (const char*, const char*);
94 _CRTIMP
int __cdecl
stricmp (const char*, const char*);
95 __CRT_INLINE
int __cdecl
96 strcasecmp (const char * __sz1
, const char * __sz2
)
97 {return _stricmp (__sz1
, __sz2
);}
98 _CRTIMP
int __cdecl
stricoll (const char*, const char*);
99 _CRTIMP
char* __cdecl
strlwr (char*);
100 _CRTIMP
int __cdecl
strnicmp (const char*, const char*, size_t);
101 __CRT_INLINE
int __cdecl
102 strncasecmp (const char * __sz1
, const char * __sz2
, size_t __sizeMaxCompare
)
103 {return _strnicmp (__sz1
, __sz2
, __sizeMaxCompare
);}
104 _CRTIMP
char* __cdecl
strnset (char*, int, size_t);
105 _CRTIMP
char* __cdecl
strrev (char*);
106 _CRTIMP
char* __cdecl
strset (char*, int);
107 _CRTIMP
char* __cdecl
strupr (char*);
109 _CRTIMP
void __cdecl
swab (const char*, char*, size_t);
111 #endif /* _NO_OLDNAMES */
113 #endif /* Not __STRICT_ANSI__ */
115 #ifndef _WSTRING_DEFINED
117 * Unicode versions of the standard calls.
118 * Also in wchar.h, where they belong according to ISO standard.
120 _CRTIMP
wchar_t* __cdecl
wcscat (wchar_t*, const wchar_t*);
121 _CRTIMP
wchar_t* __cdecl
wcschr (const wchar_t*, wchar_t);
122 _CRTIMP
int __cdecl
wcscmp (const wchar_t*, const wchar_t*);
123 _CRTIMP
int __cdecl
wcscoll (const wchar_t*, const wchar_t*);
124 _CRTIMP
wchar_t* __cdecl
wcscpy (wchar_t*, const wchar_t*);
125 _CRTIMP
size_t __cdecl
wcscspn (const wchar_t*, const wchar_t*);
126 /* Note: _wcserror requires __MSVCRT_VERSION__ >= 0x0700. */
127 _CRTIMP
size_t __cdecl
wcslen (const wchar_t*);
128 _CRTIMP
wchar_t* __cdecl
wcsncat (wchar_t*, const wchar_t*, size_t);
129 _CRTIMP
int __cdecl
wcsncmp(const wchar_t*, const wchar_t*, size_t);
130 _CRTIMP
wchar_t* __cdecl
wcsncpy(wchar_t*, const wchar_t*, size_t);
131 _CRTIMP
wchar_t* __cdecl
wcspbrk(const wchar_t*, const wchar_t*);
132 _CRTIMP
wchar_t* __cdecl
wcsrchr(const wchar_t*, wchar_t);
133 _CRTIMP
size_t __cdecl
wcsspn(const wchar_t*, const wchar_t*);
134 _CRTIMP
wchar_t* __cdecl
wcsstr(const wchar_t*, const wchar_t*);
135 _CRTIMP
wchar_t* __cdecl
wcstok(wchar_t*, const wchar_t*);
136 _CRTIMP
size_t __cdecl
wcsxfrm(wchar_t*, const wchar_t*, size_t);
138 #ifndef __STRICT_ANSI__
140 * Unicode versions of non-ANSI string functions provided by CRTDLL.
143 /* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
144 #define _wcscmpi _wcsicmp
146 _CRTIMP
wchar_t* __cdecl
_wcsdup (const wchar_t*);
147 _CRTIMP
int __cdecl
_wcsicmp (const wchar_t*, const wchar_t*);
148 _CRTIMP
int __cdecl
_wcsicoll (const wchar_t*, const wchar_t*);
149 _CRTIMP
wchar_t* __cdecl
_wcslwr (wchar_t*);
150 _CRTIMP
int __cdecl
_wcsnicmp (const wchar_t*, const wchar_t*, size_t);
151 _CRTIMP
wchar_t* __cdecl
_wcsnset (wchar_t*, wchar_t, size_t);
152 _CRTIMP
wchar_t* __cdecl
_wcsrev (wchar_t*);
153 _CRTIMP
wchar_t* __cdecl
_wcsset (wchar_t*, wchar_t);
154 _CRTIMP
wchar_t* __cdecl
_wcsupr (wchar_t*);
157 _CRTIMP
int __cdecl
_wcsncoll(const wchar_t*, const wchar_t*, size_t);
158 _CRTIMP
int __cdecl
_wcsnicoll(const wchar_t*, const wchar_t*, size_t);
159 #if __MSVCRT_VERSION__ >= 0x0700
160 _CRTIMP
wchar_t* __cdecl
_wcserror(int);
161 _CRTIMP
wchar_t* __cdecl
__wcserror(const wchar_t*);
166 /* NOTE: There is no _wcscmpi, but this is for compatibility. */
167 int __cdecl
wcscmpi (const wchar_t * __ws1
, const wchar_t * __ws2
);
168 __CRT_INLINE
int __cdecl
169 wcscmpi (const wchar_t * __ws1
, const wchar_t * __ws2
)
170 {return _wcsicmp (__ws1
, __ws2
);}
171 _CRTIMP
wchar_t* __cdecl
wcsdup (const wchar_t*);
172 _CRTIMP
int __cdecl
wcsicmp (const wchar_t*, const wchar_t*);
173 _CRTIMP
int __cdecl
wcsicoll (const wchar_t*, const wchar_t*);
174 _CRTIMP
wchar_t* __cdecl
wcslwr (wchar_t*);
175 _CRTIMP
int __cdecl
wcsnicmp (const wchar_t*, const wchar_t*, size_t);
176 _CRTIMP
wchar_t* __cdecl
wcsnset (wchar_t*, wchar_t, size_t);
177 _CRTIMP
wchar_t* __cdecl
wcsrev (wchar_t*);
178 _CRTIMP
wchar_t* __cdecl
wcsset (wchar_t*, wchar_t);
179 _CRTIMP
wchar_t* __cdecl
wcsupr (wchar_t*);
180 #endif /* Not _NO_OLDNAMES */
182 #endif /* Not strict ANSI */
184 #define _WSTRING_DEFINED
185 #endif /* _WSTRING_DEFINED */
191 #endif /* Not RC_INVOKED */
193 #endif /* Not _STRING_H_ */