home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / Emulation_Include_Files / stdlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  33.6 KB  |  923 lines

  1. /***
  2. *stdlib.h - declarations/definitions for *ALL* CORELIBC functions
  3. *
  4. *    Copyright (c) 1985-1998, Microsoft Corporation. All rights reserved.
  5. *
  6. *Purpose:
  7. *    This include file contains the function declarations for
  8. *    ALL CORELIBC functions 
  9. *
  10. ****/
  11.  
  12. #ifndef _INC_STDLIB
  13. #define _INC_STDLIB
  14.  
  15. #define COREDLL_CRT 1
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20.  
  21. /* Define _CRTAPI1 (for compatibility with the NT SDK) */
  22. #ifndef _CRTAPI1
  23. #if     _MSC_VER >= 800 && _M_IX86 >= 300
  24. #define _CRTAPI1 __cdecl
  25. #else
  26. #define _CRTAPI1
  27. #endif
  28. #endif
  29.  
  30. /* Define _CRTAPI2 (for compatibility with the NT SDK) */
  31. #ifndef _CRTAPI2
  32. #if     _MSC_VER >= 800 && _M_IX86 >= 300
  33. #define _CRTAPI2 __cdecl
  34. #else
  35. #define _CRTAPI2
  36. #endif
  37. #endif
  38.  
  39. #ifndef _CRTIMP
  40. #if defined(COREDLL) || !defined(UNDER_CE)
  41. #define _CRTIMP
  42. #else
  43. #ifdef _WIN32_WCE_EMULATION
  44. #define _CRTIMP
  45. #else
  46. #define _CRTIMP __declspec(dllimport)
  47. #endif
  48. #endif
  49. #endif
  50.  
  51. typedef unsigned int   size_t;
  52. typedef unsigned short wchar_t;
  53. typedef wchar_t        wint_t;
  54. typedef wchar_t        wctype_t;
  55.  
  56. #ifndef _TIME_T_DEFINED
  57. typedef unsigned long  time_t;
  58. #define _TIME_T_DEFINED     /* avoid multiple def's of time_t */
  59. #endif
  60.  
  61. #ifndef NULL
  62. #ifdef __cplusplus
  63. #define NULL    0
  64. #else
  65. #define NULL    ((void *)0)
  66. #endif
  67. #endif
  68.  
  69. typedef char *va_list;
  70.  
  71. // Malloc function prototypes, MALLOC.H
  72. _CRTIMP void   __cdecl free(void *);
  73. _CRTIMP void * __cdecl malloc(size_t);
  74. size_t __cdecl _msize(void *);
  75. _CRTIMP void * __cdecl realloc(void *, size_t);
  76.  
  77. // implemented by compiler
  78. void * __cdecl _alloca(size_t);
  79.  
  80. // process exit functions
  81. void __cdecl exit (int code);
  82. void __cdecl _exit (int code);
  83. void __cdecl _cexit(void);
  84. void __cdecl _c_exit (void);
  85.  
  86. #if !__STDC__
  87. /* Non-ANSI names for compatibility */
  88. #define alloca  _alloca
  89. #endif  /* __STDC__*/
  90.  
  91. #if defined(_M_MRX000) || defined(_M_PPC) || defined(_M_ALPHA)
  92. #pragma intrinsic(_alloca)
  93. #endif
  94.  
  95. // Widechar string functions, originally from STRING.H
  96. _CRTIMP wchar_t * __cdecl wcscat(wchar_t *, const wchar_t *);
  97. _CRTIMP wchar_t * __cdecl wcschr(const wchar_t *, wchar_t);
  98. _CRTIMP int       __cdecl wcscmp(const wchar_t *, const wchar_t *);
  99. _CRTIMP wchar_t * __cdecl wcscpy(wchar_t *, const wchar_t *);
  100. _CRTIMP size_t    __cdecl wcscspn(const wchar_t *, const wchar_t *);
  101. _CRTIMP size_t    __cdecl wcslen(const wchar_t *); 
  102. _CRTIMP size_t    __cdecl mbstowcs(wchar_t *wcstr, const char *mbstr, size_t count);
  103. _CRTIMP size_t    __cdecl wcstombs(char *mbstr, const wchar_t *wcstr, size_t count);
  104. _CRTIMP wchar_t * __cdecl wcsncat(wchar_t *, const wchar_t *, size_t);
  105. _CRTIMP int       __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t);
  106. _CRTIMP wchar_t * __cdecl wcsncpy(wchar_t *, const wchar_t *, size_t);
  107. _CRTIMP wchar_t * __cdecl wcspbrk(const wchar_t *, const wchar_t *);
  108. _CRTIMP wchar_t * __cdecl wcsrchr(const wchar_t *, wchar_t);
  109. _CRTIMP size_t    __cdecl wcsspn(const wchar_t *, const wchar_t *);
  110. _CRTIMP wchar_t * __cdecl wcsstr(const wchar_t *, const wchar_t *);
  111. _CRTIMP wchar_t * __cdecl wcstok(wchar_t *, const wchar_t *);
  112. _CRTIMP wchar_t * __cdecl _wcsdup(const wchar_t *);
  113. _CRTIMP int       __cdecl _wcsicmp(const wchar_t *, const wchar_t *);
  114. _CRTIMP int       __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t);
  115. _CRTIMP wchar_t * __cdecl _wcsnset(wchar_t *, wchar_t, size_t);
  116. _CRTIMP wchar_t * __cdecl _wcsrev(wchar_t *);
  117. _CRTIMP wchar_t * __cdecl _wcsset(wchar_t *, wchar_t);
  118. _CRTIMP wchar_t * __cdecl _wcslwr(wchar_t *);
  119. _CRTIMP wchar_t * __cdecl _wcsupr(wchar_t *);
  120.  
  121. // Non STDC old names for above
  122. #define wcsdup    _wcsdup
  123. #define wcsicmp   _wcsicmp
  124. #define wcsnicmp  _wcsnicmp
  125. #define wcsnset   _wcsnset
  126. #define wcsrev    _wcsrev
  127. #define wcsset    _wcsset
  128. #define wcslwr    _wcslwr
  129. #define wcsupr    _wcsupr
  130.  
  131. // ANSI string functions, originally from STRING.H
  132. size_t __cdecl strlen(const char *);
  133. int    __cdecl strcmp(const char *, const char *);
  134. char * __cdecl strcat(char *, const char *);
  135. char * __cdecl strcpy(char *, const char *);
  136.  
  137. _CRTIMP char * __cdecl strchr(const char *, int);
  138. _CRTIMP size_t __cdecl strcspn(const char *, const char *);
  139. _CRTIMP char * __cdecl strncat(char *, const char *, size_t);
  140. _CRTIMP int    __cdecl strncmp(const char *, const char *, size_t);
  141. _CRTIMP char * __cdecl strncpy(char *, const char *, size_t);
  142. _CRTIMP char * __cdecl strstr(const char *, const char *);
  143. _CRTIMP char * __cdecl strtok(char *, const char *);
  144.  
  145. #ifndef UNDER_CE
  146. _CRTIMP char *  __cdecl strpbrk(const char *, const char *);
  147. _CRTIMP char *  __cdecl strrchr(const char *, int);
  148. _CRTIMP size_t  __cdecl strspn(const char *, const char *);
  149. _CRTIMP char *  __cdecl _strdup(const char *);
  150. _CRTIMP int     __cdecl _stricmp(const char *, const char *);
  151. _CRTIMP int     __cdecl _strnicmp(const char *, const char *, size_t);
  152. _CRTIMP char *  __cdecl _strnset(char *, int, size_t);
  153. _CRTIMP char *  __cdecl _strrev(char *);
  154. _CRTIMP char *  __cdecl _strset(char *, int);
  155. _CRTIMP char *  __cdecl _strlwr(char *);
  156. _CRTIMP char *  __cdecl _strupr(char *);
  157. #endif
  158.  
  159. // Mem functions, originally from MEMORY.H
  160. int    __cdecl memcmp(const void *, const void *, size_t);
  161. void * __cdecl memcpy(void *, const void *, size_t);
  162. void * __cdecl memset(void *, int, size_t);
  163.  
  164. _CRTIMP void * __cdecl memchr(const void *, int, size_t);
  165. _CRTIMP int    __cdecl _memicmp(const void *, const void *, unsigned int);
  166. _CRTIMP void * __cdecl _memccpy(void *, const void *, int, unsigned int);
  167. _CRTIMP void * __cdecl memmove(void *, const void *, size_t);
  168.  
  169. // Data structures used by iswXXXX macros, originally from CTYPE.H
  170. extern _CRTIMP const unsigned short  _ctype[];
  171. extern _CRTIMP const unsigned short *_pctype;
  172. extern _CRTIMP const wctype_t *_pwctype;
  173.  
  174. // Bit masks used by iswXXX macros, CTYPE.H
  175. #define _UPPER      0x1    /* upper case letter */
  176. #define _LOWER      0x2    /* lower case letter */
  177. #define _DIGIT      0x4    /* digit[0-9] */
  178. #define _SPACE      0x8    /* tab, carriage return, newline, */
  179. #define _PUNCT      0x10    /* punctuation character */
  180. #define _CONTROL    0x20    /* control character */
  181. #define _BLANK      0x40    /* space char */
  182. #define _HEX        0x80    /* hexadecimal digit */
  183. #define _ALPHA      (0x0100|_UPPER|_LOWER)    /* alphabetic character */
  184.  
  185. // character classification function prototypes, CTYPE.H
  186. #ifdef _WIN32_WCE_EMULATION
  187. _CRTIMP int     __cdecl iswctype(wint_t, wctype_t);
  188. _CRTIMP wchar_t __cdecl towupper(wchar_t);
  189. _CRTIMP wchar_t __cdecl towlower(wchar_t);
  190. #else
  191. _CRTIMP int     iswctype(wint_t, wctype_t);
  192. _CRTIMP wchar_t towupper(wchar_t);
  193. _CRTIMP wchar_t towlower(wchar_t);
  194. #endif
  195.  
  196. // the character classification macro definitions, CTYPE.H
  197. #ifndef UNDER_CE
  198. _CRTIMP int __cdecl _isctype(int, int);
  199. #define isalpha(_c)      ( _isctype(_c,_ALPHA) )
  200. #define isupper(_c)      ( _isctype(_c,_UPPER) )
  201. #define islower(_c)      ( _isctype(_c,_LOWER) )
  202. #define isdigit(_c)      ( _isctype(_c,_DIGIT) )
  203. #define isxdigit(_c)     ( _isctype(_c,_HEX) )
  204. #define isspace(_c)      ( _isctype(_c,_SPACE) )
  205. #define ispunct(_c)      ( _isctype(_c,_PUNCT) )
  206. #define isalnum(_c)      ( _isctype(_c,_ALPHA|_DIGIT) )
  207. #define isprint(_c)      ( _isctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT) )
  208. #define isgraph(_c)      ( _isctype(_c,_PUNCT|_ALPHA|_DIGIT) )
  209. #define iscntrl(_c)      ( _isctype(_c,_CONTROL) )
  210. #define isascii(_c)      ( (unsigned)(_c) < 0x80 )
  211. #endif
  212.  
  213. #define iswalpha(_c)     ( iswctype(_c,_ALPHA) )
  214. #define iswupper(_c)     ( iswctype(_c,_UPPER) )
  215. #define iswlower(_c)     ( iswctype(_c,_LOWER) )
  216. #define iswdigit(_c)     ( iswctype(_c,_DIGIT) )
  217. #define iswxdigit(_c)    ( iswctype(_c,_HEX) )
  218. #define iswspace(_c)     ( iswctype(_c,_SPACE) )
  219. #define iswpunct(_c)     ( iswctype(_c,_PUNCT) )
  220. #define iswalnum(_c)     ( iswctype(_c,_ALPHA|_DIGIT) )
  221. #define iswprint(_c)     ( iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT) )
  222. #define iswgraph(_c)     ( iswctype(_c,_PUNCT|_ALPHA|_DIGIT) )
  223. #define iswcntrl(_c)     ( iswctype(_c,_CONTROL) )
  224. #define iswascii(_c)     ( (unsigned)(_c) < 0x80 )
  225. #define isleadbyte(_c)   ( IsDBCSLeadByte(_c))
  226.  
  227. // STDIO constant defns 
  228. #define _MAX_PATH    MAX_PATH
  229.  
  230. // EOF constants
  231. #define EOF  (-1)
  232. #define WEOF (wint_t)(0xFFFF)
  233.  
  234. // Seek method constants, STDIO.H
  235. #define SEEK_CUR    1
  236. #define SEEK_END    2
  237. #define SEEK_SET    0
  238.  
  239. // mode constants for _setmode()
  240. #define _O_TEXT     0x4000    /* file mode is text (translated) */
  241. #define _O_BINARY    0x8000    /* file mode is binary (untranslated) */
  242.  
  243. // FILE is an opaque handle in Win CE. Users have no access to the internals
  244. #ifndef _FILE_DEFINED
  245. typedef void FILE;
  246. #define _FILE_DEFINED
  247. #endif
  248.  
  249. #if _INTEGRAL_MAX_BITS >= 64
  250. typedef __int64 fpos_t;
  251. #else
  252. typedef long fpos_t;
  253. #endif
  254.  
  255. // Std handle defns
  256. #define stdin  _getstdfilex(0)
  257. #define stdout _getstdfilex(1)
  258. #define stderr _getstdfilex(2)
  259.  
  260. // @CESYSGEN IF COREDLL_CORESTRA
  261. // ANSI String formatting functions
  262. _CRTIMP int    __cdecl sscanf(const char *, const char *, ...);
  263. _CRTIMP int    __cdecl sprintf(char *, const char *, ...);
  264. _CRTIMP int    __cdecl vsprintf(char *, const char *, va_list);
  265. _CRTIMP int    __cdecl _snprintf(char *, size_t, const char *, ...);
  266. _CRTIMP int    __cdecl _vsnprintf(char *, size_t, const char *, va_list);
  267. // @CESYSGEN ENDIF
  268.  
  269. // Always present since wsprintfW (used by kernel) redirects to these
  270. _CRTIMP int __cdecl swprintf(wchar_t *, const wchar_t *, ...);
  271. _CRTIMP int __cdecl vswprintf(wchar_t *, const wchar_t *, va_list);
  272. _CRTIMP int __cdecl _snwprintf(wchar_t *, size_t, const wchar_t *, ...);
  273. _CRTIMP int __cdecl _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list);
  274.  
  275. // @CESYSGEN IF COREDLL_CORESTRW
  276. // WIDE String formatting functions
  277. _CRTIMP int __cdecl swscanf(const wchar_t *, const wchar_t *, ...);
  278. // @CESYSGEN ENDIF
  279.  
  280. // @CESYSGEN IF COREDLL_CORESIOA
  281.  
  282. // ANSI Stdin/Out functions & macros
  283. _CRTIMP int    __cdecl scanf(const char *, ...);
  284. _CRTIMP int    __cdecl printf(const char *, ...);
  285. _CRTIMP int    __cdecl vprintf(const char *, va_list);
  286. _CRTIMP int    __cdecl getchar(void);
  287. _CRTIMP char * __cdecl gets(char *);
  288. _CRTIMP int    __cdecl putchar(int);
  289. _CRTIMP int    __cdecl puts(const char *); 
  290.  
  291. // ANSI functions for Stdin/out and/or general buffered file handling
  292. _CRTIMP int    __cdecl fgetc(FILE *);
  293. _CRTIMP char * __cdecl fgets(char *, int, FILE *);
  294. _CRTIMP int    __cdecl fputc(int, FILE *);
  295. _CRTIMP int    __cdecl fputs(const char *, FILE *);
  296. _CRTIMP int    __cdecl ungetc(int, FILE *);
  297.  
  298. // ANSI functions for general buffered file handling
  299. _CRTIMP FILE * __cdecl fopen(const char *, const char *);
  300. _CRTIMP int    __cdecl fscanf(FILE *, const char *, ...);
  301. _CRTIMP int    __cdecl fprintf(FILE *, const char *, ...);
  302. _CRTIMP int    __cdecl vfprintf(FILE *, const char *, va_list);
  303.  
  304. #define getc(_stream)     fgetc(_stream)
  305. #define putc(_i, _stream) fputc(_i, _stream)
  306.  
  307. // @CESYSGEN ENDIF
  308.  
  309. // @CESYSGEN IF COREDLL_CORESIOA || COREDLL_CORESIOW
  310.  
  311. // functions for general buffered file handling in either ANSI or Wide
  312. _CRTIMP FILE*  __cdecl _getstdfilex(int);
  313. _CRTIMP int    __cdecl fclose(FILE *);
  314. _CRTIMP int    __cdecl _fcloseall(void);
  315. _CRTIMP size_t __cdecl fread(void *, size_t, size_t, FILE *);
  316. _CRTIMP size_t __cdecl fwrite(const void *, size_t, size_t, FILE *);
  317. _CRTIMP int    __cdecl fflush(FILE *);
  318. _CRTIMP int    __cdecl _flushall(void);
  319. _CRTIMP int    __cdecl feof(FILE *);
  320. _CRTIMP int    __cdecl ferror(FILE *);
  321. _CRTIMP void   __cdecl clearerr(FILE *);
  322. _CRTIMP int    __cdecl fgetpos(FILE *, fpos_t *);
  323. _CRTIMP int    __cdecl fsetpos(FILE *, const fpos_t *);
  324. _CRTIMP int    __cdecl fseek(FILE *, long, int);
  325. _CRTIMP long   __cdecl ftell(FILE *);
  326. _CRTIMP void*  __cdecl _fileno(FILE *);
  327. _CRTIMP int    __cdecl _setmode(FILE *, int mode);
  328. _CRTIMP FILE*  __cdecl _wfdopen(void*, const wchar_t*);
  329. _CRTIMP FILE*  __cdecl _wfreopen(const wchar_t *path, const wchar_t *mode, FILE *stream);
  330. // old names
  331. #define fcloseall _fcloseall
  332. #define fileno    _fileno
  333. #define flushall  _flushall
  334.  
  335. // @CESYSGEN ENDIF
  336.  
  337. // @CESYSGEN IF COREDLL_CORESIOW
  338.  
  339. // WIDE Stdin/Out functions & macros
  340. _CRTIMP int __cdecl wscanf(const wchar_t *, ...);
  341. _CRTIMP int __cdecl wprintf(const wchar_t *, ...);
  342. _CRTIMP int __cdecl vwprintf(const wchar_t *, va_list);
  343. _CRTIMP wint_t __cdecl getwchar(void);
  344. _CRTIMP wint_t __cdecl putwchar(wint_t);
  345. _CRTIMP wchar_t * __cdecl _getws(wchar_t *);
  346. _CRTIMP int __cdecl _putws(const wchar_t *);
  347.  
  348. // WIDE functions for Stdin/out and/or general buffered file handling
  349. _CRTIMP wint_t __cdecl fgetwc(FILE *);
  350. _CRTIMP wint_t __cdecl fputwc(wint_t, FILE *);
  351. _CRTIMP wint_t __cdecl ungetwc(wint_t, FILE *);
  352. _CRTIMP wchar_t * __cdecl fgetws(wchar_t *, int, FILE *);
  353. _CRTIMP int __cdecl fputws(const wchar_t *, FILE *);
  354.  
  355. #define getwc(_stm)             fgetwc(_stm)
  356. #define putwc(_c,_stm)          fputwc(_c,_stm)
  357.  
  358. // WIDE functions for general buffered file handling
  359. _CRTIMP FILE * __cdecl _wfopen(const wchar_t *, const wchar_t *);
  360. _CRTIMP int __cdecl fwscanf(FILE *, const wchar_t *, ...);
  361. _CRTIMP int __cdecl fwprintf(FILE *, const wchar_t *, ...);
  362. _CRTIMP int __cdecl vfwprintf(FILE *, const wchar_t *, va_list);
  363.  
  364. // @CESYSGEN ENDIF
  365.  
  366. // min and max macros, STDLIB.H
  367. #define __max(a,b)    (((a) > (b)) ? (a) : (b))
  368. #define __min(a,b)    (((a) < (b)) ? (a) : (b))
  369.  
  370. // Conversion function prototypes, STDLIB.H
  371. #ifndef UNDER_CE
  372. _CRTIMP double __cdecl strtod(const char *, char **);
  373. _CRTIMP long   __cdecl strtol(const char *, char **, int);
  374. _CRTIMP unsigned long __cdecl strtoul(const char *, char **, int);
  375. _CRTIMP __int64 __cdecl _atoi64(const char *);
  376. #endif
  377. _CRTIMP int    __cdecl atoi(const char *);
  378. _CRTIMP long   __cdecl atol(const char *);
  379. char * __cdecl _itoa(int, char *, int);
  380. char * __cdecl _ltoa(long, char *, int);
  381. char * __cdecl _ultoa(unsigned long, char *, int);
  382. char * __cdecl _ecvt(double, int, int *, int *);
  383. char * __cdecl _fcvt(double, int, int *, int *);
  384. char * __cdecl _gcvt(double, int, char *);
  385. _CRTIMP int    __cdecl tolower(int);
  386. _CRTIMP int    __cdecl toupper(int);
  387. _CRTIMP double __cdecl wcstod(const wchar_t *, wchar_t **);
  388. _CRTIMP long   __cdecl wcstol(const wchar_t *, wchar_t **, int);
  389. wchar_t * __cdecl _ultow (unsigned long, wchar_t *, int);
  390. wchar_t * __cdecl _itow (int, wchar_t *, int);
  391. wchar_t * __cdecl _ltow (long, wchar_t *, int);
  392. _CRTIMP long      __cdecl _wtol(const wchar_t *);
  393. _CRTIMP __int64   __cdecl _wtoll(const wchar_t *);
  394. unsigned long __cdecl wcstoul(const wchar_t *, wchar_t **, int);
  395. #define _wtoi   _wtol
  396. #define _wtoi64 _wtoll
  397.  
  398. // Extended logical Ops functions, STDLIB.H
  399. unsigned long __cdecl _lrotl(unsigned long, int);
  400. unsigned long __cdecl _lrotr(unsigned long, int);
  401. unsigned int  __cdecl _rotl(unsigned int, int);
  402. unsigned int  __cdecl _rotr(unsigned int, int);
  403.  
  404. // Other misc STDLIB functions
  405. _CRTIMP void   __cdecl _swab(char *, char *, int);
  406. _CRTIMP int    __cdecl rand(void);
  407. _CRTIMP void   __cdecl srand(unsigned int);
  408. void   __cdecl qsort(void *, size_t, size_t, int (__cdecl *)(const void *, const void *));
  409. double __cdecl difftime(time_t, time_t);
  410. int __cdecl atexit(void (__cdecl *)(void));
  411.  
  412. // Maximum value that can be returned by the rand function.
  413. #define RAND_MAX 0x7fff
  414.  
  415. // onexit() defns, STDLIB.H
  416. #define EXIT_SUCCESS    0
  417. #define EXIT_FAILURE    1
  418. typedef int (__cdecl * _onexit_t)(void);
  419. #define onexit_t _onexit_t
  420.  
  421. // Data structure & function definitions for div and ldiv runtimes, STDLIB.H
  422. typedef struct _div_t {
  423.     int quot;
  424.     int rem;
  425. } div_t;
  426.  
  427. typedef struct _ldiv_t {
  428.     long quot;
  429.     long rem;
  430. } ldiv_t;
  431.  
  432. div_t  __cdecl div(int, int);
  433. ldiv_t __cdecl ldiv(long, long);
  434.  
  435. // Limits originally from LIMITS.H
  436. #define CHAR_BIT     8        /* number of bits in a char */
  437. #define SCHAR_MIN    (-128)        /* minimum signed char value */
  438. #define SCHAR_MAX    127        /* maximum signed char value */
  439. #define UCHAR_MAX    0xff        /* maximum unsigned char value */
  440.  
  441. #ifndef _CHAR_UNSIGNED
  442. #define CHAR_MIN    SCHAR_MIN    /* mimimum char value */
  443. #define CHAR_MAX    SCHAR_MAX    /* maximum char value */
  444. #else
  445. #define CHAR_MIN    0
  446. #define CHAR_MAX    UCHAR_MAX
  447. #endif    /* _CHAR_UNSIGNED */
  448.  
  449. #define MB_LEN_MAX  2        /* max. # bytes in multibyte char */
  450. #define SHRT_MIN    (-32768)    /* minimum (signed) short value */
  451. #define SHRT_MAX    32767     /* maximum (signed) short value */
  452. #define USHRT_MAX   0xffff    /* maximum unsigned short value */
  453. #define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */
  454. #define INT_MAX     2147483647    /* maximum (signed) int value */
  455. #define UINT_MAX    0xffffffff    /* maximum unsigned int value */
  456. #define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */
  457. #define LONG_MAX    2147483647L    /* maximum (signed) long value */
  458. #define ULONG_MAX   0xffffffffUL    /* maximum unsigned long value */
  459.  
  460. #if    _INTEGRAL_MAX_BITS >= 8
  461. #define _I8_MIN     (-127i8 - 1)    /* minimum signed 8 bit value */
  462. #define _I8_MAX     127i8        /* maximum signed 8 bit value */
  463. #define _UI8_MAX    0xffui8    /* maximum unsigned 8 bit value */
  464. #endif
  465.  
  466. #if    _INTEGRAL_MAX_BITS >= 16
  467. #define _I16_MIN    (-32767i16 - 1)    /* minimum signed 16 bit value */
  468. #define _I16_MAX    32767i16    /* maximum signed 16 bit value */
  469. #define _UI16_MAX   0xffffui16    /* maximum unsigned 16 bit value */
  470. #endif
  471.  
  472. #if    _INTEGRAL_MAX_BITS >= 32
  473. #define _I32_MIN    (-2147483647i32 - 1) /* minimum signed 32 bit value */
  474. #define _I32_MAX    2147483647i32 /* maximum signed 32 bit value */
  475. #define _UI32_MAX   0xffffffffui32 /* maximum unsigned 32 bit value */
  476. #endif
  477.  
  478. #if    _INTEGRAL_MAX_BITS >= 64
  479. /* minimum signed 64 bit value */
  480. #define _I64_MIN    (-9223372036854775807i64 - 1)
  481. /* maximum signed 64 bit value */
  482. #define _I64_MAX      9223372036854775807i64
  483. /* maximum unsigned 64 bit value */
  484. #define _UI64_MAX      0xffffffffffffffffui64
  485. #endif
  486.  
  487. #if    _INTEGRAL_MAX_BITS >= 128
  488. /* minimum signed 128 bit value */
  489. #define _I128_MIN    (-170141183460469231731687303715884105727i128 - 1)
  490. /* maximum signed 128 bit value */
  491. #define _I128_MAX      170141183460469231731687303715884105727i128
  492. /* maximum unsigned 128 bit value */
  493. #define _UI128_MAX      0xffffffffffffffffffffffffffffffffui128
  494. #endif
  495.  
  496. // Defns from FLOAT.H
  497. #define DBL_DIG        15            /* # of decimal digits of precision */
  498. #define DBL_EPSILON    2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
  499. #define DBL_MANT_DIG   53            /* # of bits in mantissa */
  500. #define DBL_MAX        1.7976931348623158e+308 /* max value */
  501. #define DBL_MAX_10_EXP 308            /* max decimal exponent */
  502. #define DBL_MAX_EXP    1024            /* max binary exponent */
  503. #define DBL_MIN        2.2250738585072014e-308 /* min positive value */
  504. #define DBL_MIN_10_EXP (-307)            /* min decimal exponent */
  505. #define DBL_MIN_EXP    (-1021)         /* min binary exponent */
  506. #define _DBL_RADIX     2            /* exponent radix */
  507. #define _DBL_ROUNDS    1            /* addition rounding: near */
  508.  
  509. #define FLT_DIG        6            /* # of decimal digits of precision */
  510. #define FLT_EPSILON    1.192092896e-07F    /* smallest such that 1.0+FLT_EPSILON != 1.0 */
  511. #define FLT_GUARD      0
  512. #define FLT_MANT_DIG   24            /* # of bits in mantissa */
  513. #define FLT_MAX        3.402823466e+38F    /* max value */
  514. #define FLT_MAX_10_EXP 38            /* max decimal exponent */
  515. #define FLT_MAX_EXP    128            /* max binary exponent */
  516. #define FLT_MIN        1.175494351e-38F    /* min positive value */
  517. #define FLT_MIN_10_EXP (-37)            /* min decimal exponent */
  518. #define FLT_MIN_EXP    (-125)            /* min binary exponent */
  519. #define FLT_NORMALIZE  0
  520. #define FLT_RADIX      2            /* exponent radix */
  521. #define FLT_ROUNDS     1            /* addition rounding: near */
  522.  
  523. #define LDBL_DIG        DBL_DIG         /* # of decimal digits of precision */
  524. #define LDBL_EPSILON    DBL_EPSILON        /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
  525. #define LDBL_MANT_DIG   DBL_MANT_DIG        /* # of bits in mantissa */
  526. #define LDBL_MAX        DBL_MAX         /* max value */
  527. #define LDBL_MAX_10_EXP DBL_MAX_10_EXP        /* max decimal exponent */
  528. #define LDBL_MAX_EXP    DBL_MAX_EXP        /* max binary exponent */
  529. #define LDBL_MIN        DBL_MIN         /* min positive value */
  530. #define LDBL_MIN_10_EXP DBL_MIN_10_EXP        /* min decimal exponent */
  531. #define LDBL_MIN_EXP    DBL_MIN_EXP        /* min binary exponent */
  532. #define _LDBL_RADIX     DBL_RADIX        /* exponent radix */
  533. #define _LDBL_ROUNDS    DBL_ROUNDS        /* addition rounding: near */
  534.  
  535. // Abstract User Control Word Mask and bit definitions
  536. #define _MCW_EM         0x0008001f        /* interrupt Exception Masks */
  537. #define _EM_INEXACT     0x00000001        /*   inexact (precision) */
  538. #define _EM_UNDERFLOW   0x00000002        /*   underflow */
  539. #define _EM_OVERFLOW    0x00000004        /*   overflow */
  540. #define _EM_ZERODIVIDE  0x00000008        /*   zero divide */
  541. #define _EM_INVALID     0x00000010        /*   invalid */
  542. #define _MCW_RC         0x00000300        /* Rounding Control */
  543. #define _RC_NEAR        0x00000000        /*   near */
  544. #define _RC_DOWN        0x00000100        /*   down */
  545. #define _RC_UP          0x00000200        /*   up */
  546. #define _RC_CHOP        0x00000300        /*   chop */
  547.  
  548. // Abstract User Status Word bit definitions
  549. #define _SW_INEXACT     0x00000001        /* inexact (precision) */
  550. #define _SW_UNDERFLOW   0x00000002        /* underflow */
  551. #define _SW_OVERFLOW    0x00000004        /* overflow */
  552. #define _SW_ZERODIVIDE  0x00000008        /* zero divide */
  553. #define _SW_INVALID     0x00000010        /* invalid */
  554.  
  555. // i386 specific definitions
  556. #define _MCW_PC       0x00030000        /* Precision Control */
  557. #define _PC_64        0x00000000        /*    64 bits */
  558. #define _PC_53        0x00010000        /*    53 bits */
  559. #define _PC_24        0x00020000        /*    24 bits */
  560. #define _MCW_IC       0x00040000        /* Infinity Control */
  561. #define _IC_AFFINE    0x00040000        /*   affine */
  562. #define _IC_PROJECTIVE  0x00000000        /*   projective */
  563. #define _EM_DENORMAL    0x00080000        /* denormal exception mask (_control87 only) */
  564. #define _SW_DENORMAL    0x00080000        /* denormal status bit */
  565.  
  566. // MIPS R4000 and SH4 specific definitions
  567. #ifdef  _M_SH
  568. #define _MCW_DN     0x00040000      /* Denormal Control (SH4)   */
  569. #define _DN_FLUSH   0x00040000      /*   flush to zero (SH4)    */
  570. #else
  571. #define _MCW_DN     0x01000000      /* Denormal Control (R4000) */
  572. #define _DN_FLUSH   0x01000000      /*   flush to zero (R4000)  */
  573. #endif
  574. #define _DN_SAVE    0x00000000        /*   save */
  575.  
  576.  
  577. // initial Control Word value
  578. #ifdef    _M_IX86
  579. #define _CW_DEFAULT ( _RC_NEAR + _PC_64 + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT )
  580. #elif defined(_M_SH) || defined(_M_MRX000)
  581. #define _CW_DEFAULT ( _RC_NEAR + _PC_53 + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT )
  582. #endif
  583.  
  584. // invalid subconditions (_SW_INVALID also set)
  585. #define _SW_UNEMULATED      0x0040    /* unemulated instruction */
  586. #define _SW_SQRTNEG         0x0080    /* square root of a neg number */
  587. #define _SW_STACKOVERFLOW   0x0200    /* FP stack overflow */
  588. #define _SW_STACKUNDERFLOW  0x0400    /* FP stack underflow */
  589.  
  590. //  Floating point error signals and return codes
  591. #define _FPE_INVALID        0x81
  592. #define _FPE_DENORMAL       0x82
  593. #define _FPE_ZERODIVIDE     0x83
  594. #define _FPE_OVERFLOW       0x84
  595. #define _FPE_UNDERFLOW      0x85
  596. #define _FPE_INEXACT        0x86
  597. #define _FPE_UNEMULATED     0x87
  598. #define _FPE_SQRTNEG        0x88
  599. #define _FPE_STACKOVERFLOW  0x8a
  600. #define _FPE_STACKUNDERFLOW 0x8b
  601. #define _FPE_EXPLICITGEN    0x8c    /* raise( SIGFPE ); */
  602.  
  603. // Floating point function prototypes
  604. unsigned int __cdecl _clearfp(void);
  605. unsigned int __cdecl _controlfp(unsigned int,unsigned int);
  606. unsigned int __cdecl _statusfp(void);
  607. void         __cdecl _fpreset(void);
  608. #define _clear87    _clearfp
  609. #define _status87   _statusfp
  610.  
  611. // IEEE recommended functions
  612. double __cdecl _copysign (double, double);
  613. double __cdecl _chgsign (double);
  614. double __cdecl _scalb(double, long);
  615. double __cdecl _logb(double);
  616. double __cdecl _nextafter(double, double);
  617. int    __cdecl _finite(double);
  618. int    __cdecl _isnan(double);
  619. int    __cdecl _fpclass(double);
  620.  
  621. #define _FPCLASS_SNAN    0x0001    /* signaling NaN */
  622. #define _FPCLASS_QNAN    0x0002    /* quiet NaN */
  623. #define _FPCLASS_NINF    0x0004    /* negative infinity */
  624. #define _FPCLASS_NN    0x0008    /* negative normal */
  625. #define _FPCLASS_ND    0x0010    /* negative denormal */
  626. #define _FPCLASS_NZ    0x0020    /* -0 */
  627. #define _FPCLASS_PZ    0x0040    /* +0 */
  628. #define _FPCLASS_PD    0x0080    /* positive denormal */
  629. #define _FPCLASS_PN    0x0100    /* positive normal */
  630. #define _FPCLASS_PINF    0x0200    /* positive infinity */
  631.  
  632. typedef float _FP32;
  633. typedef double _FP64;
  634. typedef short _I16;
  635. typedef int    _I32;
  636. typedef unsigned short _U16;
  637. typedef unsigned int _U32;
  638.  
  639. typedef struct {
  640.     unsigned long W[4];
  641. } _U32ARRAY;
  642.  
  643. typedef struct {
  644.     unsigned short W[5];
  645. } _FP80;
  646.  
  647. typedef struct {
  648.     unsigned long W[4];
  649. } _FP128;
  650.  
  651. typedef struct {
  652.     unsigned long W[2];
  653. } _I64;
  654.  
  655. typedef struct {
  656.     unsigned long W[2];
  657. } _U64;
  658.  
  659. typedef struct {
  660.     unsigned short W[5];
  661. } _BCD80;
  662.  
  663. typedef struct {
  664.     union {
  665.         _FP32         Fp32Value;
  666.         _FP64         Fp64Value;
  667.         _FP80         Fp80Value;
  668.         _FP128         Fp128Value;
  669.         _I16         I16Value;
  670.         _I32         I32Value;
  671.         _I64         I64Value;
  672.         _U16         U16Value;
  673.         _U32         U32Value;
  674.         _U64         U64Value;
  675.         _BCD80         Bcd80Value;
  676.         char         *StringValue;
  677.         int         CompareValue;
  678.         _U32ARRAY    U32ArrayValue;
  679.     } Value;
  680.     unsigned int OperandValid : 1;
  681.     unsigned int Format : 4;
  682. } _FPIEEE_VALUE;
  683.  
  684. typedef struct {
  685.     unsigned int Inexact : 1;
  686.     unsigned int Underflow : 1;
  687.     unsigned int Overflow : 1;
  688.     unsigned int ZeroDivide : 1;
  689.     unsigned int InvalidOperation : 1;
  690. } _FPIEEE_EXCEPTION_FLAGS;
  691.  
  692. typedef struct {
  693.     unsigned int RoundingMode : 2;
  694.     unsigned int Precision : 3;
  695.     unsigned int Operation :12;
  696.     _FPIEEE_EXCEPTION_FLAGS Cause;
  697.     _FPIEEE_EXCEPTION_FLAGS Enable;
  698.     _FPIEEE_EXCEPTION_FLAGS Status;
  699.     _FPIEEE_VALUE Operand1;
  700.     _FPIEEE_VALUE Operand2;
  701.     _FPIEEE_VALUE Result;
  702. } _FPIEEE_RECORD;
  703.  
  704. typedef struct _EXCEPTION_POINTERS *PEXCEPTION_POINTERS;
  705.  
  706. #ifdef _WIN32_WCE_EMULATION
  707. int __cdecl _fpieee_flt(unsigned long exc_code, PEXCEPTION_POINTERS p, int handler(_FPIEEE_RECORD *));
  708. #else
  709. int _fpieee_flt(unsigned long exc_code, PEXCEPTION_POINTERS p, int handler(_FPIEEE_RECORD *));
  710. #endif
  711.  
  712. // Non-ANSI names for compatibility
  713. #define DBL_RADIX        _DBL_RADIX
  714. #define DBL_ROUNDS       _DBL_ROUNDS
  715. #define LDBL_RADIX       _LDBL_RADIX
  716. #define LDBL_ROUNDS      _LDBL_ROUNDS
  717. #define MCW_EM           _MCW_EM
  718. #define EM_INVALID       _EM_INVALID
  719. #define EM_DENORMAL      _EM_DENORMAL
  720. #define EM_ZERODIVIDE    _EM_ZERODIVIDE
  721. #define EM_OVERFLOW      _EM_OVERFLOW
  722. #define EM_UNDERFLOW     _EM_UNDERFLOW
  723. #define EM_INEXACT       _EM_INEXACT
  724. #define MCW_IC           _MCW_IC
  725. #define IC_AFFINE        _IC_AFFINE
  726. #define IC_PROJECTIVE    _IC_PROJECTIVE
  727. #define MCW_RC           _MCW_RC
  728. #define RC_CHOP          _RC_CHOP
  729. #define RC_UP            _RC_UP
  730. #define RC_DOWN          _RC_DOWN
  731. #define RC_NEAR          _RC_NEAR
  732. #define MCW_PC           _MCW_PC
  733. #define PC_24            _PC_24
  734. #define PC_53            _PC_53
  735. #define PC_64            _PC_64
  736. #define CW_DEFAULT       _CW_DEFAULT
  737. #define SW_INVALID       _SW_INVALID
  738. #define SW_DENORMAL      _SW_DENORMAL
  739. #define SW_ZERODIVIDE    _SW_ZERODIVIDE
  740. #define SW_OVERFLOW      _SW_OVERFLOW
  741. #define SW_UNDERFLOW     _SW_UNDERFLOW
  742. #define SW_INEXACT       _SW_INEXACT
  743. #define SW_UNEMULATED    _SW_UNEMULATED
  744. #define SW_SQRTNEG       _SW_SQRTNEG
  745. #define SW_STACKOVERFLOW   _SW_STACKOVERFLOW
  746. #define SW_STACKUNDERFLOW  _SW_STACKUNDERFLOW
  747. #define FPE_INVALID        _FPE_INVALID
  748. #define FPE_DENORMAL     _FPE_DENORMAL
  749. #define FPE_ZERODIVIDE   _FPE_ZERODIVIDE
  750. #define FPE_OVERFLOW     _FPE_OVERFLOW
  751. #define FPE_UNDERFLOW    _FPE_UNDERFLOW
  752. #define FPE_INEXACT      _FPE_INEXACT
  753. #define FPE_UNEMULATED   _FPE_UNEMULATED
  754. #define FPE_SQRTNEG        _FPE_SQRTNEG
  755. #define FPE_STACKOVERFLOW  _FPE_STACKOVERFLOW
  756. #define FPE_STACKUNDERFLOW _FPE_STACKUNDERFLOW
  757. #define FPE_EXPLICITGEN    _FPE_EXPLICITGEN
  758.  
  759. #ifdef _WIN32_WCE_EMULATION
  760. double __cdecl _frnd(double);
  761. double __cdecl _fsqrt(double);
  762. #else
  763. double _frnd(double);
  764. double _fsqrt(double);
  765. #endif
  766.  
  767. // defns from MATH.H
  768. // definition of _exception struct - this struct is passed to the matherr
  769. // routine when a floating point exception is detected
  770. struct _exception {
  771.     int type;        /* exception type - see below */
  772.     char *name;        /* name of function where error occured */
  773.     double arg1;        /* first argument to function */
  774.     double arg2;        /* second argument (if any) to function */
  775.     double retval;        /* value to be returned by function */
  776.     } ;
  777.  
  778. // Non-ANSI name for compatibility
  779. #define exception _exception
  780.  
  781. // definition of a _complex struct to be used by those who use cabs and
  782. // want type checking on their argument
  783. struct _complex {
  784.     double x,y;    /* real and imaginary parts */
  785.     } ;
  786.  
  787. // Non-ANSI name for compatibility
  788. #define complex _complex
  789.  
  790. // definitions of _HUGE and HUGE_VAL - respectively the XENIX and ANSI names
  791. // for a value returned in case of error by a number of the floating point
  792. // math routines
  793. // @CESYSGEN IF !REMOVE_DRAGON
  794. _CRTIMP
  795. // @CESYSGEN ENDIF
  796. extern double _HUGE;
  797. #define HUGE_VAL _HUGE
  798.  
  799. // MATH.H func defns
  800. int       __cdecl abs(int);
  801. long      __cdecl labs(long);
  802. double    __cdecl acos(double);
  803. double    __cdecl asin(double);
  804. double    __cdecl atan(double);
  805. double    __cdecl atan2(double, double);
  806. double    __cdecl cos(double);
  807. double    __cdecl cosh(double);
  808. double    __cdecl exp(double);
  809. double    __cdecl fabs(double);
  810. double    __cdecl fmod(double, double);
  811. double    __cdecl log(double);
  812. double    __cdecl log10(double);
  813. double    __cdecl pow(double, double);
  814. double    __cdecl sin(double);
  815. double    __cdecl sinh(double);
  816. double    __cdecl sqrt(double);
  817. double    __cdecl tan(double);
  818. double    __cdecl tanh(double);
  819. double    __cdecl _cabs(struct _complex);
  820. double    __cdecl ceil(double);
  821. double    __cdecl floor(double);
  822. double    __cdecl frexp(double, int *);
  823. double    __cdecl _hypot(double, double);
  824. double    __cdecl _j0(double);
  825. double    __cdecl _j1(double);
  826. double    __cdecl _jn(int, double);
  827. double    __cdecl ldexp(double, int);
  828. _CRTIMP int       __cdecl _matherr(struct _exception *);
  829. double    __cdecl modf(double, double *);
  830. double    __cdecl _y0(double);
  831. double    __cdecl _y1(double);
  832. double    __cdecl _yn(int, double);
  833.  
  834. // MATH.H macros -- oldnames
  835. #define acosl(x)    ((long double)acos((double)(x)))
  836. #define asinl(x)    ((long double)asin((double)(x)))
  837. #define atanl(x)    ((long double)atan((double)(x)))
  838. #define atan2l(x,y) ((long double)atan2((double)(x), (double)(y)))
  839. #define ceill(x)    ((long double)ceil((double)(x)))
  840. #define cosl(x)     ((long double)cos((double)(x)))
  841. #define coshl(x)    ((long double)cosh((double)(x)))
  842. #define expl(x)     ((long double)exp((double)(x)))
  843. #define fabsl(x)    ((long double)fabs((double)(x)))
  844. #define floorl(x)   ((long double)floor((double)(x)))
  845. #define fmodl(x,y)  ((long double)fmod((double)(x), (double)(y)))
  846. #define frexpl(x,y) ((long double)frexp((double)(x), (y)))
  847. #define hypotl(x,y) ((long double)hypot((double)(x), (double)(y)))
  848. #define ldexpl(x,y) ((long double)ldexp((double)(x), (y)))
  849. #define logl(x)     ((long double)log((double)(x)))
  850. #define log10l(x)   ((long double)log10((double)(x)))
  851. #define _matherrl   _matherr
  852. #define modfl(x,y)  ((long double)modf((double)(x), (double *)(y)))
  853. #define powl(x,y)   ((long double)pow((double)(x), (double)(y)))
  854. #define sinl(x)     ((long double)sin((double)(x)))
  855. #define sinhl(x)    ((long double)sinh((double)(x)))
  856. #define sqrtl(x)    ((long double)sqrt((double)(x)))
  857. #define tanl(x)     ((long double)tan((double)(x)))
  858. #define tanhl(x)    ((long double)tanh((double)(x)))
  859.  
  860. #ifdef MIPS
  861.  
  862. #define va_start(ap,v) ap  = (va_list)&v + sizeof(v)
  863. #define va_end(list) ( list = (va_list)0 )
  864. #define va_arg(list, mode) ((mode *)(list =\
  865.  (char *) ((((int)list + (__builtin_alignof(mode)<=4?3:7)) &\
  866.  (__builtin_alignof(mode)<=4?-4:-8))+sizeof(mode))))[-1]
  867.  
  868. #elif defined(PPC)
  869.  
  870. // PPC uses 8-byte alignment of 8-byte quantities
  871. #define    _ALIGNIT(ap,t)     ((((int)(ap))+(sizeof(t)<8?3:7)) & (sizeof(t)<8?~3:~7))
  872.  
  873. #define _INTSIZEOF(n)   ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
  874. #define va_start(ap,v)  ( ap = (va_list)&v + _INTSIZEOF(v) )
  875. #define va_arg(ap,t)    ( *(t *)((ap = (char *) (_ALIGNIT(ap, t) + _INTSIZEOF(t))) - _INTSIZEOF(t)) )
  876. #define va_end(ap)      ( ap = (va_list)0 )
  877.  
  878. #else
  879.  
  880. #define _INTSIZEOF(n)   ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
  881. #define va_start(ap,v)  ( ap = (va_list)&v + _INTSIZEOF(v) )
  882. #define va_arg(ap,t)    ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
  883. #define va_end(ap)      ( ap = (va_list)0 )
  884.  
  885. #endif
  886.  
  887. // Processor-dependent setjmp defns
  888. #if defined(x86) || defined(_X86_)
  889.  
  890. #define setjmp    _setjmp
  891. #define _JBLEN    16
  892.  
  893. #elif defined(SHx) || defined(MIPS)
  894.  
  895. #define setjmp        _setjmp
  896. #define _JBLEN        32
  897.  
  898. #elif defined(PPC)
  899.  
  900. #define _setjmp          setjmp
  901. #define _JBLEN        64
  902.  
  903. #elif defined(ARM)
  904.  
  905. #define _setjmp          setjmp
  906. #define _JBLEN        11
  907.  
  908. #endif
  909.  
  910. // SETJMP: define the buffer type for holding the state information
  911. typedef  int  jmp_buf[_JBLEN];
  912.  
  913. // SETJMP: function prototypes
  914. int __cdecl _setjmp(jmp_buf);
  915. void __cdecl longjmp(jmp_buf, int);
  916.  
  917. #ifdef __cplusplus
  918. }
  919. #endif
  920.  
  921. #endif    /* _INC_STDLIB */
  922.  
  923.