home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / h.z / STDLIB.H < prev    next >
C/C++ Source or Header  |  1996-11-06  |  15KB  |  384 lines

  1. /*
  2.  *  stdlib.h    Standard Library functions
  3.  *
  4.  *  Copyright by WATCOM International Corp. 1988-1996.  All rights reserved.
  5.  */
  6. #ifndef _STDLIB_H_INCLUDED
  7. #define _STDLIB_H_INCLUDED
  8. #if !defined(_ENABLE_AUTODEPEND)
  9.   #pragma read_only_file;
  10. #endif
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. #ifndef _COMDEF_H_INCLUDED
  16.  #include <_comdef.h>
  17. #endif
  18.  
  19. #if defined(_M_IX86)
  20.   #pragma pack(__push,1);
  21. #else
  22.   #pragma pack(__push,8);
  23. #endif
  24.  
  25. #ifndef _WCHAR_T_DEFINED
  26. #define _WCHAR_T_DEFINED
  27. #define _WCHAR_T_DEFINED_
  28. #ifdef __cplusplus
  29. typedef long char wchar_t;
  30. #else
  31. typedef unsigned short wchar_t;
  32. #endif
  33. #endif
  34.  
  35. #ifndef _SIZE_T_DEFINED
  36. #define _SIZE_T_DEFINED
  37. #define _SIZE_T_DEFINED_
  38. typedef unsigned size_t;
  39. #endif
  40.  
  41. #ifndef NULL
  42.  #if defined(__SMALL__) || defined(__MEDIUM__) || defined(__386__) || defined(__AXP__) || defined(__PPC__)
  43.   #define NULL   0
  44.  #else
  45.   #define NULL   0L
  46.  #endif
  47. #endif
  48.  
  49. #ifndef MB_CUR_MAX
  50.     #define MB_CUR_MAX    2
  51. #endif
  52. #ifndef MB_LEN_MAX
  53.     #define MB_LEN_MAX    2
  54. #endif
  55.  
  56. #ifndef _MAX_PATH
  57.  #if defined(__OS2__) || defined(__NT__)
  58.   #define _MAX_PATH   260 /* maximum length of full pathname */
  59.  #else
  60.   #define _MAX_PATH   144 /* maximum length of full pathname */
  61.  #endif
  62. #endif
  63.  
  64. #define RAND_MAX    32767u
  65. #define EXIT_SUCCESS    0
  66. #define EXIT_FAILURE    0xff
  67.  
  68. typedef struct    {
  69.     int    quot;
  70.     int    rem;
  71. } div_t;
  72.  
  73. typedef struct    {
  74.     long    quot;
  75.     long    rem;
  76. } ldiv_t;
  77.  
  78. _WCRTLINK extern void     abort( void );
  79. _WCIRTLINK extern int     abs( int __j );
  80.       extern int     atexit( register void ( *__func )( void ) );
  81. _WMRTLINK extern double     atof( const char *__nptr );
  82. _WCRTLINK extern int     atoi( const char *__nptr );
  83. _WCRTLINK extern long int atol( const char *__nptr );
  84. _WCRTLINK extern void    *bsearch( const void *__key, const void *__base, 
  85.                   size_t __nmemb, size_t __size, 
  86.                   int (*__compar)(const void *__pkey, 
  87.                             const void *__pbase) );
  88. _WCRTLINK extern void     break_on( void );
  89. _WCRTLINK extern void     break_off( void );
  90. _WCRTLINK extern void    *calloc( size_t __n, size_t __size );
  91. _WCIRTLINK extern div_t     div( int __numer, int __denom );
  92. _WCRTLINK extern void     exit( int __status );
  93. _WCRTLINK extern void     free( void *__ptr );
  94. _WCRTLINK extern char    *getenv( const char *__name );
  95. _WCIRTLINK extern long int labs( long int __j );
  96. #if defined(__386__) || defined(__AXP__) || defined(__PPC__)
  97. _WCIRTLINK 
  98. #else
  99. _WCRTLINK 
  100. #endif
  101. extern ldiv_t ldiv( long int __numer, long int __denom );
  102. _WCRTLINK extern void    *malloc( size_t __size );
  103. _WCRTLINK extern int     mblen( const char *__s, size_t __n );
  104. _WCRTLINK extern size_t     mbstowcs( wchar_t *__pwcs, const char *__s, 
  105.                    size_t __n );
  106. _WCRTLINK extern int     mbtowc( wchar_t *__pwc, const char *__s, size_t __n );
  107. _WCRTLINK extern size_t     wcstombs( char *__s, const wchar_t *__pwcs, 
  108.                    size_t __n );
  109. _WCRTLINK extern int     wctomb( char *__s, wchar_t __wchar );
  110. _WCRTLINK extern void     qsort( void *__base, size_t __nmemb, size_t __size,
  111.                 int (*__compar)( const void *, const void * ) );
  112. _WCRTLINK extern int     rand( void );
  113. _WCRTLINK extern void    *realloc( void *__ptr, size_t __size );
  114. _WCRTLINK extern void     srand( unsigned int __seed );
  115. _WMRTLINK extern double     strtod( const char *__nptr, char **__endptr );
  116. _WCRTLINK extern long int strtol( const char *__nptr, char **__endptr, 
  117.                  int __base );
  118. _WCRTLINK extern unsigned long strtoul( const char *__nptr, char **__endptr, 
  119.                        int __base );
  120. _WCRTLINK extern int     system( const char *__string );
  121.  
  122. #if defined(__INLINE_FUNCTIONS__)
  123.  #pragma intrinsic(abs,div,labs)
  124.  #if defined(__386__) || defined(__AXP__) || defined(__PPC__)
  125.   #pragma intrinsic(ldiv)
  126.  #endif
  127. #endif
  128.  
  129. #ifndef __cplusplus
  130. #define atof(p)  strtod(p,(char **)NULL)
  131. #endif
  132.  
  133.  
  134. #if !defined(NO_EXT_KEYS) /* extensions enabled */
  135.  
  136. _WCRTLINK extern void     _exit( int __status );
  137. _WMRTLINK extern char    *ecvt( double __val, int __ndig, int *__dec, 
  138.                    int *__sign );
  139. _WMRTLINK extern char    *_ecvt( double __val, int __ndig, int *__dec, 
  140.                    int *__sign );
  141. _WMRTLINK extern char    *fcvt( double __val, int __ndig, int *__dec, 
  142.                    int *__sign );
  143. _WMRTLINK extern char    *_fcvt( double __val, int __ndig, int *__dec, 
  144.                     int *__sign );
  145. _WCRTLINK extern char    *_fullpath( char *__buf, const char *__path, 
  146.                         size_t __size );
  147. _WMRTLINK extern char    *gcvt( double __val, int __ndig, char *__buf );
  148. _WMRTLINK extern char    *_gcvt( double __val, int __ndig, char *__buf );
  149. _WCRTLINK extern char    *itoa( int __value, char *__buf, int __radix );
  150. _WCRTLINK extern char    *_itoa( int __value, char *__buf, int __radix );
  151. #if defined(__386__) || defined(__AXP__) || defined(__PPC__)
  152. _WCIRTLINK 
  153. #else
  154. _WCRTLINK 
  155. #endif
  156. extern unsigned long _lrotl( unsigned long __value, unsigned int __shift );
  157. #if defined(__386__) || defined(__AXP__) || defined(__PPC__)
  158. _WCIRTLINK 
  159. #else
  160. _WCRTLINK 
  161. #endif
  162. extern unsigned long _lrotr( unsigned long __value, unsigned int __shift );
  163. _WCRTLINK extern char    *ltoa( long int __value, char *__buf, int __radix );
  164. _WCRTLINK extern char    *_ltoa( long int __value, char *__buf, int __radix );
  165. _WCRTLINK extern void     _makepath( char *__path, const char *__drive,
  166.                     const char *__dir, const char *__fname,
  167.                     const char *__ext );
  168. _WCIRTLINK extern unsigned int _rotl( unsigned int __value, unsigned int __shift );
  169. _WCIRTLINK extern unsigned int _rotr( unsigned int __value, unsigned int __shift );
  170.  
  171. _WMRTLINK extern wchar_t *_wecvt( double __val, int __ndig, int *__dec, 
  172.                   int *__sign );
  173. _WMRTLINK extern wchar_t *_wfcvt( double __val, int __ndig, int *__dec, 
  174.                   int *__sign );
  175. _WMRTLINK extern wchar_t *_wgcvt( double __val, int __ndig, wchar_t *__buf );
  176.  
  177. _WCRTLINK extern int      _wtoi( const wchar_t * );
  178. _WCRTLINK extern long int _wtol( const wchar_t * );
  179. _WCRTLINK extern wchar_t *_itow( int, wchar_t *, int );
  180. _WCRTLINK extern wchar_t *_ltow( long int, wchar_t *, int );
  181. _WCRTLINK extern wchar_t *_utow( unsigned int, wchar_t *, int );
  182. _WCRTLINK extern wchar_t *_ultow( unsigned long int, wchar_t *, int );
  183.  
  184. _WMRTLINK extern double     _wtof( const wchar_t * );
  185. _WMRTLINK extern double     _watof( const wchar_t * );
  186. _WCRTLINK extern long int wcstol( const wchar_t *, wchar_t **, int );
  187. _WMRTLINK extern double     wcstod( const wchar_t *, wchar_t ** );
  188. _WCRTLINK extern unsigned long int wcstoul( const wchar_t *, wchar_t **, int );
  189. _WCRTLINK extern wchar_t *_atouni( wchar_t *, const char * );
  190.  
  191. _WCRTLINK extern wchar_t *_wfullpath( wchar_t *, const wchar_t *, size_t );
  192. _WCRTLINK extern void      _wmakepath( wchar_t *__path, const wchar_t *__drive,
  193.                       const wchar_t *__dir,
  194.                       const wchar_t *__fname,
  195.                       const wchar_t *__ext );
  196.  
  197. _WCRTLINK extern int _wcsicmp( const wchar_t *, const wchar_t * );
  198. _WCRTLINK extern wchar_t *_wcsdup( const wchar_t * );
  199. _WCRTLINK extern int _wcsnicmp( const wchar_t *, const wchar_t *, size_t );
  200. _WCRTLINK extern wchar_t *_wcslwr( wchar_t * );
  201. _WCRTLINK extern wchar_t *_wcsupr( wchar_t * );
  202. _WCRTLINK extern wchar_t *_wcsrev( wchar_t * );
  203. _WCRTLINK extern wchar_t *_wcsset( wchar_t *, wchar_t );
  204. _WCRTLINK extern wchar_t *_wcsnset( wchar_t *, int, size_t );
  205.  
  206. _WCRTLINK extern wchar_t *  _wgetenv( const wchar_t *__name );
  207. _WCRTLINK extern int        _wsetenv( const wchar_t *__name,
  208.                       const wchar_t *__newvalue, 
  209.                       int __overwrite );
  210. _WCRTLINK extern int        _wputenv( const wchar_t *__env_string );
  211. _WCRTLINK extern void        _wsearchenv( const wchar_t *__name,
  212.                      const wchar_t *__env_var,
  213.                      wchar_t *__buf );
  214.                      
  215. _WCRTLINK extern void        _wsplitpath2( const wchar_t *__inp,
  216.                       wchar_t *__outp, wchar_t **__drive,
  217.                       wchar_t **__dir, wchar_t **__fn,
  218.                       wchar_t **__ext );
  219. _WCRTLINK extern void        _wsplitpath( const wchar_t *__path,
  220.                      wchar_t *__drive, wchar_t *__dir,
  221.                      wchar_t *__fname, wchar_t *__ext );
  222.                       
  223. _WCRTLINK extern int        _wsystem( const wchar_t *__cmd );
  224.  
  225.  
  226. _WCRTLINK extern int     putenv( const char *__string );
  227. _WCRTLINK extern void     _searchenv( const char *__name, const char *__env_var,
  228.                      char *__buf );
  229. _WCRTLINK extern void     _splitpath2( const char *__inp, char *__outp,
  230.                           char **__drive, char **__dir, 
  231.                       char **__fn, char **__ext );
  232. _WCRTLINK extern void     _splitpath( const char *__path, char *__drive,
  233.                          char *__dir, char *__fname, char *__ext );
  234. _WCRTLINK extern void     swab( char *__src, char *__dest, int __num );
  235. _WCRTLINK extern char    *ultoa( unsigned long int __value, char *__buf, 
  236.                 int __radix );
  237. _WCRTLINK extern char    *_ultoa( unsigned long int __value, char *__buf, 
  238.                 int __radix );
  239. _WCRTLINK extern char    *utoa( unsigned int __value, char *__buf, int __radix );
  240. _WCRTLINK extern char    *_utoa( unsigned int __value, char *__buf, int __radix );
  241.  
  242. #if defined(__INLINE_FUNCTIONS__)
  243.  #pragma intrinsic(_rotl,_rotr)
  244.  #if defined(__386__) || defined(__AXP__) || defined(__PPC__)
  245.   #pragma intrinsic(_lrotl,_lrotr)
  246.  #endif
  247. #endif
  248.  
  249. /* min and max macros */
  250. #if !defined(__max)
  251. #define __max(a,b)  (((a) > (b)) ? (a) : (b))
  252. #endif
  253. #if !defined(max) && !defined(__cplusplus)
  254. #define max(a,b)  (((a) > (b)) ? (a) : (b))
  255. #endif
  256. #if !defined(__min)
  257. #define __min(a,b)  (((a) < (b)) ? (a) : (b))
  258. #endif
  259. #if !defined(min) && !defined(__cplusplus)
  260. #define min(a,b)  (((a) < (b)) ? (a) : (b))
  261. #endif
  262.  
  263. /*
  264.  * The following sizes are the maximum sizes of buffers used by the _fullpath()
  265.  * _makepath() and _splitpath() functions.  They include space for the '\0'
  266.  * terminator.
  267.  */
  268. #if defined(__NT__) || defined(__OS2__) 
  269. #define _MAX_DRIVE   3    /* maximum length of drive component */
  270. #define _MAX_DIR    256 /* maximum length of path component */
  271. #define _MAX_FNAME  256 /* maximum length of file name component */
  272. #define _MAX_EXT    256 /* maximum length of extension component */
  273. #else
  274. #define _MAX_DRIVE   3    /* maximum length of drive component */
  275. #define _MAX_DIR    130 /* maximum length of path component */
  276. #define _MAX_FNAME   9    /* maximum length of file name component */
  277. #define _MAX_EXT     5    /* maximum length of extension component */
  278. #ifndef _MAX_NAME
  279. #define _MAX_NAME    13  /* maximum length of file name (with extension) */
  280. #endif
  281. #endif
  282.  
  283. #define _MAX_PATH2 (_MAX_PATH+3) /* maximum size of output buffer
  284.                     for _splitpath2() */
  285.  
  286. #if defined(__FUNCTION_DATA_ACCESS)
  287.  #define environ (*__get_environ_ptr())
  288.  #define _wenviron (*__get_wenviron_ptr())
  289.  #define _fileinfo (*__get_fileinfo_ptr())
  290. #elif defined(__SW_BR) || defined(_RTDLL) 
  291.  #define environ   environ_br
  292.  #define _wenviron _wenviron_br
  293.  #define _fileinfo _fileinfo_br
  294. #endif
  295. _WCRTLINK extern char **_WCDATA environ;    /*  pointer to environment table */
  296. _WCRTLINK extern wchar_t **_WCDATA _wenviron; /*  pointer to wide environment */
  297. _WCRTLINK extern int _fileinfo;        /* for inheriting POSIX handles */
  298.  
  299. #ifndef errno
  300. #define errno (*__get_errno_ptr())
  301. #endif
  302. _WCRTLINK extern int errno;
  303. #define _doserrno (*__get_doserrno_ptr())
  304. _WCRTLINK extern int            _doserrno;  /* DOS system error code value */
  305. #if defined(__FUNCTION_DATA_ACCESS)
  306.  #define _psp             (*__get_psp_ptr())
  307.  #define _osmode         (*__get_osmode_ptr())
  308.  #define _fmode             (*__get_fmode_ptr())
  309.  #define sys_errlist         (*__get_sys_errlist_ptr())
  310.  #define sys_nerr         (*__get_sys_nerr_ptr())
  311.  #define __minreal         (*__get_minreal_ptr())
  312.  #define __win_alloc_flags   (*__get_win_alloc_flags_ptr())
  313.  #define __win_realloc_flags (*__get_win_realloc_flags_ptr())
  314. #elif defined(__SW_BR) || defined(_RTDLL) 
  315.  #define _psp                _psp_br
  316.  #define _osmode             _osmode_br
  317.  #define _fmode              _fmode_br
  318.  #define sys_errlist         sys_errlist_br
  319.  #define sys_nerr            sys_nerr_br
  320.  #define __minreal           __minreal_br
  321.  #define __win_alloc_flags   __win_alloc_flags_br
  322.  #define __win_realloc_flags __win_realloc_flags_br
  323. #endif
  324. _WCRTLINK extern unsigned _WCDATA    _psp;    /* Program Segment Prefix */
  325. #define DOS_MODE 0                /* Real Address Mode */
  326. #define OS2_MODE 1                /* Protected Address Mode */
  327. _WCRTLINK extern unsigned char _WCDATA _osmode;    /* DOS_MODE or OS2_MODE */
  328. _WCRTLINK extern int _WCDATA        _fmode;     /* default file translation mode */
  329. _WCRTLINK extern char *            sys_errlist[];/* strerror error message table */
  330. _WCRTLINK extern int _WCDATA        sys_nerr;    /* # of entries on sys_errlist array */
  331. _WCRTLINK extern unsigned _WCDATA        __minreal;    /* DOS4GW var for WLINK MINREAL option*/
  332. _WCRTLINK extern unsigned long _WCDATA __win_alloc_flags; /* Windows allocation flags */
  333. _WCRTLINK extern unsigned long _WCDATA __win_realloc_flags;/* Windows reallocation flags */
  334. #if defined(__FUNCTION_DATA_ACCESS)
  335.  #define _amblksiz (*__get_amblksiz_ptr())
  336.  #define _osmajor (*__get_osmajor_ptr())
  337.  #define _osminor (*__get_osminor_ptr())
  338. #elif defined(__SW_BR) || defined(_RTDLL) 
  339.  #define _amblksiz _amblksiz_br
  340.  #define _osmajor _osmajor_br
  341.  #define _osminor _osminor_br
  342. #endif
  343. _WCRTLINK extern unsigned _WCDATA      _amblksiz;   /*  mallocs done in multiples of    */
  344. _WCRTLINK extern unsigned char _WCDATA _osmajor;    /*  O/S major version # */
  345. _WCRTLINK extern unsigned char _WCDATA _osminor;    /*  O/S minor version # */
  346. #if defined(__NT__)
  347.  #if defined(__FUNCTION_DATA_ACCESS)
  348.   #define _osbuild  (*__get_osbuild_ptr())
  349.   #define _osver    (*__get_osver_ptr())
  350.   #define _winmajor (*__get_winmajor_ptr())
  351.   #define _winminor (*__get_winminor_ptr())
  352.   #define _winver   (*__get_winver_ptr())
  353.  #elif defined(__SW_BR) || defined(_RTDLL) 
  354.   #define _osbuild  _osbuild_br
  355.   #define _osver    _osver_br
  356.   #define _winmajor _winmajor_br
  357.   #define _winminor _winminor_br
  358.   #define _winver   _winver_br
  359.  #endif
  360.  _WCRTLINK extern unsigned short _WCDATA _osbuild;  /*  O/S build revision  */
  361.  _WCRTLINK extern unsigned int _WCDATA _osver;        /*  O/S build revision  */
  362.  _WCRTLINK extern unsigned int _WCDATA _winmajor;   /*  O/S major version # */
  363.  _WCRTLINK extern unsigned int _WCDATA _winminor;   /*  O/S minor version # */
  364.  _WCRTLINK extern unsigned int _WCDATA _winver;        /*  O/S version #       */
  365. #endif
  366. extern    int      __argc;    /* number of cmd line args */
  367. extern    char    **__argv;    /* vector of cmd line args */
  368. #if defined(__NT__) || (defined(__OS2__) && (defined(__386__) || defined(__PPC__)))
  369. extern    int      __wargc;    /* number of wide cmd line args */
  370. extern    wchar_t    **__wargv;    /* vector of wide cmd line args */
  371. #endif
  372.  
  373. _WCRTLINK extern void _WCNEAR *__brk(unsigned __new_brk_value);
  374. _WCRTLINK extern void _WCNEAR *sbrk(int __increment);
  375.  typedef void (*onexit_t)();
  376. _WCRTLINK extern onexit_t onexit(onexit_t __func);
  377. #endif
  378.  
  379. #pragma pack(__pop);
  380. #ifdef __cplusplus
  381. };
  382. #endif
  383. #endif
  384.