4 * Derived from the mingw header written by Colin Peters.
5 * Modified for Wine use by Jon Griffiths and Francois Gouget.
6 * This file is in the public domain.
8 #ifndef __WINE_STRING_H
9 #define __WINE_STRING_H
10 #ifndef __WINE_USE_MSVCRT
11 #define __WINE_USE_MSVCRT
14 #ifndef _WCHAR_T_DEFINED
15 #define _WCHAR_T_DEFINED
17 typedef unsigned short wchar_t;
21 #ifndef _SIZE_T_DEFINED
22 typedef unsigned int size_t;
23 #define _SIZE_T_DEFINED
26 #ifndef _NLSCMP_DEFINED
27 #define _NLSCMPERROR ((unsigned int)0x7fffffff)
28 #define _NLSCMP_DEFINED
35 #define NULL ((void *)0)
43 void* _memccpy(void*,const void*,int,unsigned int);
44 int _memicmp(const void*,const void*,unsigned int);
45 int _strcmpi(const char*,const char*);
46 char* _strdup(const char*);
47 char* _strerror(const char*);
48 int _stricmp(const char*,const char*);
49 int _stricoll(const char*,const char*);
51 int _strnicmp(const char*,const char*,size_t);
52 char* _strnset(char*,int,size_t);
54 char* _strset(char*,int);
57 void* memchr(const void*,int,size_t);
58 int memcmp(const void*,const void*,size_t);
59 void* memcpy(void*,const void*,size_t);
60 void* memmove(void*,const void*,size_t);
61 void* memset(void*,int,size_t);
62 char* strcat(char*,const char*);
63 char* strchr(const char*,int);
64 int strcmp(const char*,const char*);
65 int strcoll(const char*,const char*);
66 char* strcpy(char*,const char*);
67 size_t strcspn(const char*,const char*);
69 size_t strlen(const char*);
70 char* strncat(char*,const char*,size_t);
71 int strncmp(const char*,const char*,size_t);
72 char* strncpy(char*,const char*,size_t);
73 char* strpbrk(const char*,const char*);
74 char* strrchr(const char*,int);
75 size_t strspn(const char*,const char*);
76 char* strstr(const char*,const char*);
77 char* strtok(char*,const char*);
78 size_t strxfrm(char*,const char*,size_t);
80 #ifndef _WSTRING_DEFINED
81 #define _WSTRING_DEFINED
82 wchar_t*_wcsdup(const wchar_t*);
83 int _wcsicmp(const wchar_t*,const wchar_t*);
84 int _wcsicoll(const wchar_t*,const wchar_t*);
85 wchar_t*_wcslwr(wchar_t*);
86 int _wcsnicmp(const wchar_t*,const wchar_t*,size_t);
87 wchar_t*_wcsnset(wchar_t*,wchar_t,size_t);
88 wchar_t*_wcsrev(wchar_t*);
89 wchar_t*_wcsset(wchar_t*,wchar_t);
90 wchar_t*_wcsupr(wchar_t*);
92 wchar_t*wcscat(wchar_t*,const wchar_t*);
93 wchar_t*wcschr(const wchar_t*,wchar_t);
94 int wcscmp(const wchar_t*,const wchar_t*);
95 int wcscoll(const wchar_t*,const wchar_t*);
96 wchar_t*wcscpy(wchar_t*,const wchar_t*);
97 size_t wcscspn(const wchar_t*,const wchar_t*);
98 size_t wcslen(const wchar_t*);
99 wchar_t*wcsncat(wchar_t*,const wchar_t*,size_t);
100 int wcsncmp(const wchar_t*,const wchar_t*,size_t);
101 wchar_t*wcsncpy(wchar_t*,const wchar_t*,size_t);
102 wchar_t*wcspbrk(const wchar_t*,const wchar_t*);
103 wchar_t*wcsrchr(const wchar_t*,wchar_t wcFor
);
104 size_t wcsspn(const wchar_t*,const wchar_t*);
105 wchar_t*wcsstr(const wchar_t*,const wchar_t*);
106 wchar_t*wcstok(wchar_t*,const wchar_t*);
107 size_t wcsxfrm(wchar_t*,const wchar_t*,size_t);
108 #endif /* _WSTRING_DEFINED */
115 static inline void* memccpy(void *s1
, const void *s2
, int c
, size_t n
) { return _memccpy(s1
, s2
, c
, n
); }
116 static inline int memicmp(const void* s1
, const void* s2
, size_t len
) { return _memicmp(s1
, s2
, len
); }
117 static inline int strcasecmp(const char* s1
, const char* s2
) { return _stricmp(s1
, s2
); }
118 static inline int strcmpi(const char* s1
, const char* s2
) { return _strcmpi(s1
, s2
); }
119 static inline char* strdup(const char* buf
) { return _strdup(buf
); }
120 static inline int stricmp(const char* s1
, const char* s2
) { return _stricmp(s1
, s2
); }
121 static inline int stricoll(const char* s1
, const char* s2
) { return _stricoll(s1
, s2
); }
122 static inline char* strlwr(char* str
) { return _strlwr(str
); }
123 static inline int strncasecmp(const char *str1
, const char *str2
, size_t n
) { return _strnicmp(str1
, str2
, n
); }
124 static inline int strnicmp(const char* s1
, const char* s2
, size_t n
) { return _strnicmp(s1
, s2
, n
); }
125 static inline char* strnset(char* str
, int value
, unsigned int len
) { return _strnset(str
, value
, len
); }
126 static inline char* strrev(char* str
) { return _strrev(str
); }
127 static inline char* strset(char* str
, int value
) { return _strset(str
, value
); }
128 static inline char* strupr(char* str
) { return _strupr(str
); }
130 static inline wchar_t* wcsdup(const wchar_t* str
) { return _wcsdup(str
); }
131 static inline int wcsicoll(const wchar_t* str1
, const wchar_t* str2
) { return _wcsicoll(str1
, str2
); }
132 static inline wchar_t* wcslwr(wchar_t* str
) { return _wcslwr(str
); }
133 static inline int wcsnicmp(const wchar_t* str1
, const wchar_t* str2
, size_t n
) { return _wcsnicmp(str1
, str2
, n
); }
134 static inline wchar_t* wcsnset(wchar_t* str
, wchar_t c
, size_t n
) { return _wcsnset(str
, c
, n
); }
135 static inline wchar_t* wcsrev(wchar_t* str
) { return _wcsrev(str
); }
136 static inline wchar_t* wcsset(wchar_t* str
, wchar_t c
) { return _wcsset(str
, c
); }
137 static inline wchar_t* wcsupr(wchar_t* str
) { return _wcsupr(str
); }
139 #endif /* __WINE_STRING_H */