home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.4 / Group3 / stdlib.h < prev    next >
C/C++ Source or Header  |  1998-12-24  |  7KB  |  246 lines

  1. /*
  2.  * stdlib.h
  3.  *
  4.  * Definitions for common types, variables, and functions.
  5.  *
  6.  * This file is part of the Mingw32 package.
  7.  *
  8.  * Contributors:
  9.  *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  10.  *
  11.  *  THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  *  This source code is offered for use in the public domain. You may
  14.  *  use, modify or distribute it freely.
  15.  *
  16.  *  This code is distributed in the hope that it will be useful but
  17.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  *  DISCLAMED. This includes but is not limited to warranties of
  19.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  * $Revision: 2.3 $
  22.  * $Author: colin $
  23.  * $Date: 1998/05/12 22:26:23 $
  24.  *
  25.  */
  26.  
  27. #ifndef _STDLIB_H_
  28. #define _STDLIB_H_
  29.  
  30. /*
  31.  * RAND_MAX is the maximum value that may be returned by rand.
  32.  * The minimum is zero.
  33.  */
  34. #define    RAND_MAX    0x7FFF
  35.  
  36. /*
  37.  * These values may be used as exit status codes.
  38.  */
  39. #define    EXIT_SUCCESS    0
  40. #define    EXIT_FAILURE    -1
  41.  
  42. /*
  43.  * Definitions for path name functions.
  44.  * NOTE: All of these values have simply been chosen to be conservatively high.
  45.  *       Remember that with long file names we can no longer depend on
  46.  *       extensions being short.
  47.  */
  48. #ifndef __STRICT_ANSI__
  49.  
  50. #ifndef MAX_PATH
  51. #define    MAX_PATH    (260)
  52. #endif
  53.  
  54. #define    _MAX_PATH    MAX_PATH
  55. #define    _MAX_DRIVE    (3)
  56. #define    _MAX_DIR    _MAX_PATH
  57. #define    _MAX_FNAME    (256)
  58. #define    _MAX_EXT    _MAX_PATH
  59.  
  60. #endif    /* Not __STRICT_ANSI__ */
  61.  
  62.  
  63. #ifndef RC_INVOKED
  64.  
  65. #ifdef __cplusplus
  66. extern "C" {
  67. #endif
  68.  
  69. /*
  70.  * This seems like a convenient place to declare these variables, which
  71.  * give programs using WinMain (or main for that matter) access to main-ish
  72.  * argc and argv. environ is a pointer to a table of environment variables.
  73.  * NOTE: Strings in _argv and environ are ANSI strings.
  74.  */
  75. extern int    _argc;
  76. extern char**    _argv;
  77. extern char**    environ;
  78.  
  79. /*
  80.  * OS version and such constants.
  81.  */
  82. #ifndef __STRICT_ANSI__
  83.  
  84. #ifdef    __MSVCRT__
  85. /* msvcrtxx.dll */
  86.  
  87. extern unsigned int*    __p__osver();
  88. extern unsigned int*    __p__winver();
  89. extern unsigned int*    __p__winmajor();
  90. extern unsigned int*    __p__winminor();
  91.  
  92. #define _osver        (*__p__osver())
  93. #define _winver        (*__p__winver())
  94. #define _winmajor    (*__p__winmajor())
  95. #define _winminor    (*__p__winminor())
  96.  
  97. #else
  98. /* Not msvcrtxx.dll, thus crtdll.dll */
  99.  
  100. extern unsigned int*    _imp___osver_dll;
  101. extern unsigned int*    _imp___winver_dll;
  102. extern unsigned int*    _imp___winmajor_dll;
  103. extern unsigned int*    _imp___winminor_dll;
  104.  
  105. #define _osver        (*_imp___osver_dll)
  106. #define _winver        (*_imp___winver_dll)
  107. #define _winmajor    (*_imp___winmajor_dll)
  108. #define _winminor    (*_imp___winminor_dll)
  109.  
  110. #endif
  111.  
  112. #endif /* Not __STRICT_ANSI__ */
  113.  
  114.  
  115. #define __need_size_t
  116. #define __need_wchar_t
  117. #define __need_NULL
  118. #include <stddef.h>
  119.  
  120. #ifdef    __GNUC__
  121. #define    _ATTRIB_NORETURN    __attribute__ ((noreturn))
  122. #else    /* Not __GNUC__ */
  123. #define    _ATTRIB_NORETURN
  124. #endif    /* __GNUC__ */
  125.  
  126. double    atof    (const char* szNumber);
  127. int    atoi    (const char* szNumber);
  128. long    atol    (const char* szNumber);
  129.  
  130.  
  131. double    strtod    (const char* szNumber, char** pszAfterNumber);
  132. double    wcstod    (const wchar_t* wsNumber, wchar_t** pwsAfterNumber);
  133. long    strtol    (const char* szNumber, char** pszAfterNumber, int nBase);
  134. long    wcstol    (const wchar_t* wsNumber, wchar_t** pwsAfterNumber, int nBase);
  135.  
  136. unsigned long    strtoul    (const char* szNumber, char** pszAfterNumber,
  137.             int nBase);
  138. unsigned long    wcstoul (const wchar_t* wsNumber, wchar_t** pwsAfterNumber,
  139.             int nBase);
  140.  
  141. size_t    wcstombs    (char* mbsDest, const wchar_t* wsConvert, size_t size);
  142. int    wctomb        (char* mbDest, wchar_t wc);
  143.  
  144. int    mblen        (const char* mbs, size_t sizeString);
  145. size_t    mbstowcs    (wchar_t* wcaDest, const char* mbsConvert,
  146.              size_t size);
  147. int    mbtowc        (wchar_t* wcDest, const char* mbConvert, size_t size);
  148.  
  149. int    rand    ();
  150. void    srand    (unsigned int nSeed);
  151.  
  152. void*    calloc    (size_t sizeObjCnt, size_t sizeObject);
  153. void*    malloc    (size_t    sizeObject);
  154. void*    realloc    (void* pObject, size_t sizeNew);
  155. void    free    (void* pObject);
  156.  
  157. void    abort    () _ATTRIB_NORETURN;
  158. void    exit    (int nStatus) _ATTRIB_NORETURN;
  159. int    atexit    (void (*pfuncExitProcessing)());
  160.  
  161. int    system    (const char* szCommand);
  162. char*    getenv    (const char* szVarName);
  163.  
  164. typedef    int (*_pfunccmp_t)(const void*, const void*);
  165.  
  166. void*    bsearch    (const void* pKey, const void* pBase, size_t cntObjects,
  167.         size_t sizeObject, _pfunccmp_t pfuncCmp);
  168. void    qsort    (const void* pBase, size_t cntObjects, size_t sizeObject,
  169.         _pfunccmp_t pfuncCmp);
  170.  
  171. int    abs    (int n);
  172. long    labs    (long n);
  173.  
  174. /*
  175.  * div_t and ldiv_t are structures used to return the results of div and
  176.  * ldiv.
  177.  *
  178.  * NOTE: div and ldiv appear not to work correctly unless
  179.  *       -fno-pcc-struct-return is specified. This is included in the
  180.  *       mingw32 specs file.
  181.  */
  182. typedef struct { int quot, rem; } div_t;
  183. typedef struct { long quot, rem; } ldiv_t;
  184.  
  185. div_t    div    (int nNumerator, int nDenominator);
  186. ldiv_t    ldiv    (long lNumerator, long lDenominator);
  187.  
  188.  
  189. #ifndef    __STRICT_ANSI__
  190.  
  191. /*
  192.  * NOTE: Officially the three following functions are obsolete. The Win32 API
  193.  *       functions SetErrorMode, Beep and Sleep are their replacements.
  194.  */
  195. void    _beep (unsigned int, unsigned int);
  196. void    _seterrormode (int nMode);
  197. void    _sleep (unsigned long ulTime);
  198.  
  199. void    _exit    (int nStatus) _ATTRIB_NORETURN;
  200.  
  201. int    _putenv    (const char* szNameEqValue);
  202. void    _searchenv (const char* szFileName, const char* szVar,
  203.         char* szFullPathBuf);
  204.  
  205. char*    _itoa (int nValue, char* sz, int nRadix);
  206. char*    _ltoa (long lnValue, char* sz, int nRadix);
  207.  
  208. char*    _ecvt (double dValue, int nDig, int* pnDec, int* pnSign);
  209. char*    _fcvt (double dValue, int nDig, int* pnDec, int* pnSign);
  210. char*    _gcvt (double dValue, int nDec, char* caBuf);
  211.  
  212. void    _makepath (char* caPath, const char* szDrive, const char* szDir,
  213.         const char* szName, const char* szExtension);
  214. void    _splitpath (const char* szPath, char* caDrive, char* caDir,
  215.         char* caName, char* caExtension);
  216. char*    _fullpath (char* caBuf, const char* szPath, size_t sizeMax);
  217.  
  218. #ifndef    _NO_OLDNAMES
  219. int    putenv (const char* szNameEqValue);
  220. void    searchenv (const char* szFileName, const char* szVar,
  221.         char* szFullPathBuf);
  222.  
  223. char*    itoa (int nValue, char* sz, int nRadix);
  224. char*    ltoa (long lnValue, char* sz, int nRadix);
  225.  
  226. char*    ecvt (double dValue, int nDig, int* pnDec, int* pnSign);
  227. char*    fcvt (double dValue, int nDig, int* pnDec, int* pnSign);
  228. char*    gcvt (double dValue, int nDec, char* caBuf);
  229. #endif    /* Not _NO_OLDNAMES */
  230.  
  231. #endif    /* Not __STRICT_ANSI__ */
  232.  
  233. /*
  234.  * Undefine the no return attribute used in some function definitions
  235.  */
  236. #undef    _ATTRIB_NORETURN
  237.  
  238. #ifdef __cplusplus
  239. }
  240. #endif
  241.  
  242. #endif    /* Not RC_INVOKED */
  243.  
  244. #endif    /* Not _STDLIB_H_ */
  245.  
  246.