home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c221 / 6.ddi / MWHC.006 / 30 < prev    next >
Encoding:
Text File  |  1992-12-09  |  6.1 KB  |  217 lines

  1. /*
  2.  *   stdlib.h -- ANSI 
  3.  *
  4.  *   Functions, types, and macros that are of general utility.
  5.  *
  6.  *           Copyright (c) 1990, MetaWare Incorporated
  7.  */
  8.  
  9. #ifndef _STDLIB_H
  10. #define _STDLIB_H
  11. #pragma push_align_members(64);
  12.  
  13. #ifdef __CPLUSPLUS__
  14. extern "C" {
  15. #endif
  16.  
  17. #ifndef _SIZET_H
  18. #include <sizet.h>
  19. #endif
  20.  
  21. #ifndef _WCHAR_T_DEFINED
  22. #define _WCHAR_T_DEFINED
  23. typedef _wchar_t wchar_t;
  24. #endif
  25.  
  26. #ifndef _DIV_T_DEFINED
  27. #define _DIV_T_DEFINED
  28. typedef struct { int quot; int rem; } div_t;
  29. typedef struct { long quot; long rem; } ldiv_t;
  30. #endif
  31.  
  32. #ifndef NULL
  33. #define NULL            ((void *)0)
  34. #endif
  35.  
  36. #define EXIT_FAILURE    1
  37. #define EXIT_SUCCESS    0
  38.  
  39. #if _MSNT
  40. extern int _syserrno;
  41. #endif
  42.  
  43. #if _MSDOS || _MSNT
  44.     extern char ** _environ;
  45.     #if __HIGHC__ 
  46.     extern int errno;
  47.     extern char ** environ;
  48.     #pragma alias(environ,"_environ");
  49.     #endif /* __HIGHC__ */
  50. #endif
  51.  
  52. #if _MSDOS
  53. extern int _doserrno;
  54. extern int _fmode;
  55. extern unsigned char _osmajor;
  56. extern unsigned char _osminor;
  57. extern unsigned char _osmode;
  58. extern unsigned int _psp;
  59. extern char * _sys_errlist[];
  60. extern int _sys_nerr;
  61.  
  62. #define _MAX_PATH 144
  63. #define _MAX_DRIVE 3
  64. #define _MAX_DIR 130
  65. #define _MAX_FNAME 9
  66. #define _MAX_EXT 5
  67.  
  68. #if __HIGHC__ 
  69.  
  70. #define DOS_MODE 0
  71. #define OS2_MODE 1
  72.  
  73. #endif /* __HIGHC__ */
  74. #endif /* _MSDOS */
  75.  
  76.  
  77. /* string conversion functions */
  78. extern  double          atof(const char *__nptr);
  79. #if __HIGHC__
  80. extern  long double     _atold(const char *__nptr);
  81. #endif
  82. extern  int             atoi(const char *__nptr);
  83. extern  long            atol(const char *__nptr);
  84. extern  double          strtod(const char *__nptr, char **__endptr);
  85. extern  long            strtol(const char *__nptr, char **__endptr, int __base);
  86. extern  unsigned long   strtoul(const char *__nptr, char **__endptr, int __base);
  87.  
  88. extern void _swab(char *__from_ptr,char *__to_ptr,int __kount);
  89. #if __HIGHC__
  90. extern void swab(char *__from_ptr,char *__to_ptr,int __kount);
  91. #endif
  92.  
  93. #if _MSDOS && __HIGHC__
  94.  
  95. #ifndef tolower
  96. extern int tolower(int __c);
  97. #endif
  98.  
  99. #ifndef toupper
  100. extern int toupper(int __c);
  101. #endif
  102. #endif /* _MSDOS && __HIGHC__ */
  103.  
  104.  
  105. /* pseudo-random number generator */
  106. #if _IBMESA || (_I860 && _ATT4)
  107. #define RAND_MAX 32767     /* Match vendor's limited range. */
  108. #else
  109. #define RAND_MAX (sizeof(int) == 2 ? 32767 : 2147483647)
  110. #endif
  111. #define MB_CUR_MAX      1
  112.  
  113. extern  int             rand(void);
  114. extern  void            srand(unsigned int __seed);
  115.  
  116. /* memory management functions */
  117. extern  void *          calloc(size_t __nelem, size_t __size);
  118. extern  void            free(void *__ptr);
  119. extern  void *          malloc(size_t __size);
  120. extern  void *          realloc(void *__ptr, size_t __size);
  121.  
  122. /* shared memory functions (not currently implemented by MetaWare) */
  123. extern    void *        _smalloc(size_t __size);
  124. extern  void            _sfree(void *__ptr);
  125.  
  126. /* communication with the environment */
  127. extern  void            abort(void);
  128. extern  int             atexit(void (*func)(void));
  129. extern  void            exit(int __status);
  130. extern  char *          getenv(const char *__name);
  131. extern  int             system(const char *__string);
  132.  
  133. /* number-to-string conversion routines */
  134. extern char * _itoa(int, char *, int);
  135. extern char * _ltoa(long ,char *, int);
  136. extern char * _ultoa(unsigned long, char *, int);
  137. extern char * _utoa(unsigned int, char *, int);
  138. extern char * _ecvt(double, int, int *, int *);
  139. extern char * _fcvt(double, int, int *, int *);
  140. extern char * _gcvt(double, int, char *);
  141. #if __HIGHC__
  142. extern char * itoa(int, char *, int);
  143. extern char * ltoa(long ,char *, int);
  144. extern char * ultoa(unsigned long, char *, int);
  145. extern char * utoa(unsigned int, char *, int);
  146. extern char * ecvt(double, int, int *, int *);
  147. extern char * fcvt(double, int, int *, int *);
  148. extern char * gcvt(double, int, char *);
  149. #endif
  150.  
  151. extern unsigned int _rotl(unsigned int ,int );
  152. extern unsigned int _rotr(unsigned int ,int );
  153.  
  154. #if _MSDOS || _MSNT
  155.     extern void _exit(int __status);
  156.     extern int _putenv(char *);
  157.     #if __HIGHC__ 
  158.     extern int  putenv(char *);
  159.     #endif
  160. #endif
  161.  
  162. #if _MSDOS
  163. extern void _searchenv(char *,char *,char *);
  164. extern void _splitpath(char *,char *,char *,char *,char *);
  165. extern void _makepath(char *,char *,char *,char *,char *);
  166. extern unsigned long _lrotl(unsigned long ,int );
  167. extern unsigned long _lrotr(unsigned long ,int );
  168. extern unsigned short _srotl(unsigned short ,int );
  169. extern unsigned short _srotr(unsigned short ,int );
  170. extern unsigned char _crotl(unsigned char ,int );
  171. extern unsigned char _crotr(unsigned char ,int );
  172. #if __HIGHC__ 
  173. extern void perror(const char *);
  174. #endif
  175. #endif
  176.  
  177.  
  178. /* searching and sorting utilities */
  179. extern  void *          bsearch(const void *__key, const void *__base,
  180.                                 size_t __nmemb, size_t __size,
  181.                                 int (*__compar)(const void *, const void *));
  182. extern  void            qsort(void *__base, size_t __nmemb, size_t __size,
  183.                                 int (*__compar)(const void *, const void *));
  184.  
  185. /* integer arithmetic functions */
  186. #undef abs
  187. #undef labs
  188. extern  int             abs(int __j);
  189. extern  long            labs(long int __j);
  190.  
  191. #if 0  /*__HIGHC__*/
  192.     /* No longer required or desired. It causes a bogus declaration of
  193.      * "_abs" if user subsequently declares abs or labs
  194.      */
  195.     #define abs(__x) _abs(__x)
  196.     #define labs(__x) _abs(__x)
  197. #endif
  198.  
  199. extern  div_t           div(int __numer, int __denom);
  200. extern  ldiv_t          ldiv(long int __numer, long int __denom);
  201.  
  202. /* Multibyte character functions */
  203. extern  int        mblen(const char *__s, size_t __n);
  204. #define mblen( s, n )   mbtowc((wchar_t *)0, s, n)
  205. extern  int             mbtowc(wchar_t *__pwc, const char *__s, size_t __n);
  206. extern  int             wctomb(char *__s, wchar_t __wchar);
  207.  
  208. /* Multibyte string functions */
  209. extern  size_t          mbstowcs(wchar_t *__pwcs, const char *__s, size_t __n);
  210. extern  size_t          wcstombs(char *__s, const wchar_t *__pwcs, size_t __n);
  211.  
  212. #ifdef __CPLUSPLUS__
  213. }
  214. #endif
  215. #pragma pop_align_members();
  216. #endif /*STDLIB_H*/
  217.