home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / string.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  8KB  |  194 lines

  1. /*
  2.  * string.h
  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.
  6.  *
  7.  * Definitions for memory and string functions.
  8.  *
  9.  */
  10.  
  11. #ifndef _STRING_H_
  12. #define    _STRING_H_
  13.  
  14. /* All the headers include this file. */
  15. #include <_mingw.h>
  16.  
  17. /*
  18.  * Define size_t, wchar_t and NULL
  19.  */
  20. #define __need_size_t
  21. #define __need_wchar_t
  22. #define    __need_NULL
  23. #ifndef RC_INVOKED
  24. #include <stddef.h>
  25. #endif    /* Not RC_INVOKED */
  26.  
  27. #ifndef RC_INVOKED
  28.  
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32.  
  33. /*
  34.  * Prototypes of the ANSI Standard C library string functions.
  35.  */
  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. */
  48.  
  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);
  59.  
  60. #ifndef __STRICT_ANSI__
  61. /*
  62.  * Extra non-ANSI functions provided by the CRTDLL library
  63.  */
  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);
  78.  
  79. #ifdef __MSVCRT__
  80. _CRTIMP int __cdecl  _strncoll(const char*, const char*, size_t);
  81. _CRTIMP int __cdecl  _strnicoll(const char*, const char*, size_t);
  82. #endif
  83.  
  84. #ifndef    _NO_OLDNAMES
  85. /*
  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
  88.  * strcasecmp.
  89.  */
  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*);
  108. #ifndef _UWIN
  109. _CRTIMP void __cdecl    swab (const char*, char*, size_t);
  110. #endif /* _UWIN */
  111. #endif /* _NO_OLDNAMES */
  112.  
  113. #endif    /* Not __STRICT_ANSI__ */
  114.  
  115. #ifndef _WSTRING_DEFINED
  116. /*
  117.  * Unicode versions of the standard calls.
  118.  * Also in wchar.h, where they belong according to ISO standard.
  119.  */
  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);
  137.  
  138. #ifndef    __STRICT_ANSI__
  139. /*
  140.  * Unicode versions of non-ANSI string functions provided by CRTDLL.
  141.  */
  142.  
  143. /* NOTE: _wcscmpi not provided by CRTDLL, this define is for portability */
  144. #define        _wcscmpi    _wcsicmp
  145.  
  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*);
  155.  
  156. #ifdef __MSVCRT__
  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*);
  162. #endif
  163. #endif
  164.  
  165. #ifndef    _NO_OLDNAMES
  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 */
  181.  
  182. #endif    /* Not strict ANSI */
  183.  
  184. #define _WSTRING_DEFINED
  185. #endif  /* _WSTRING_DEFINED */
  186.  
  187. #ifdef __cplusplus
  188. }
  189. #endif
  190.  
  191. #endif    /* Not RC_INVOKED */
  192.  
  193. #endif    /* Not _STRING_H_ */
  194.