00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef _STDLIB_H_
00040 #define _STDLIB_H_ 1
00041
00042 #ifndef __ASSEMBLER__
00043
00044 #define __need_NULL
00045 #define __need_size_t
00046 #define __need_wchar_t
00047 #include <stddef.h>
00048
00049 #ifndef __ptr_t
00050 #define __ptr_t void *
00051 #endif
00052
00053 #ifdef __cplusplus
00054 extern "C" {
00055 #endif
00056
00068 typedef struct {
00069 int quot;
00070 int rem;
00071 } div_t;
00072
00074 typedef struct {
00075 long quot;
00076 long rem;
00077 } ldiv_t;
00078
00080 typedef int (*__compar_fn_t)(const void *, const void *);
00081
00082 #ifndef __DOXYGEN__
00083
00084 #ifndef __ATTR_CONST__
00085 #define __ATTR_CONST__ __attribute__((__const__))
00086 #endif
00087
00088 #ifndef __ATTR_MALLOC__
00089 #define __ATTR_MALLOC__ __attribute__((__malloc__))
00090 #endif
00091
00092 #ifndef __ATTR_NORETURN__
00093 #define __ATTR_NORETURN__ __attribute__((__noreturn__))
00094 #endif
00095
00096 #ifndef __ATTR_PURE__
00097 #define __ATTR_PURE__ __attribute__((__pure__))
00098 #endif
00099
00100 #endif
00101
00106 extern void abort(void) __ATTR_NORETURN__;
00107
00111 extern int abs(int __i) __ATTR_CONST__;
00112 #ifndef __DOXYGEN__
00113 #define abs(__i) __builtin_abs(__i)
00114 #endif
00115
00120 extern long labs(long __i) __ATTR_CONST__;
00121 #ifndef __DOXYGEN__
00122 #define labs(__i) __builtin_labs(__i)
00123 #endif
00124
00143 extern void *bsearch(const void *__key, const void *__base, size_t __nmemb,
00144 size_t __size, int (*__compar)(const void *, const void *));
00145
00146
00152 extern div_t div(int __num, int __denom) __asm__("__divmodhi4") __ATTR_CONST__;
00158 extern ldiv_t ldiv(long __num, long __denom) __asm__("__divmodsi4") __ATTR_CONST__;
00159
00175 extern void qsort(void *__base, size_t __nmemb, size_t __size,
00176 __compar_fn_t __compar);
00177
00208 extern long strtol(const char *__nptr, char **__endptr, int __base);
00209
00242 extern unsigned long strtoul(const char *__nptr, char **__endptr, int __base);
00243
00254 extern long atol(const char *__s) __ATTR_PURE__;
00255
00266 extern int atoi(const char *__s) __ATTR_PURE__;
00267
00278 extern void exit(int __status) __ATTR_NORETURN__;
00279
00290 extern void *malloc(size_t __size) __ATTR_MALLOC__;
00291
00297 extern void free(void *__ptr);
00298
00302 extern size_t __malloc_margin;
00303
00307 extern char *__malloc_heap_start;
00308
00312 extern char *__malloc_heap_end;
00313
00319 extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__;
00320
00338 extern void *realloc(void *__ptr, size_t __size) __ATTR_MALLOC__;
00339
00340 extern double strtod(const char *__nptr, char **__endptr);
00341
00342 extern double atof(const char *__nptr);
00343
00345 #define RAND_MAX 0x7FFF
00346
00364 extern int rand(void);
00368 extern void srand(unsigned int __seed);
00369
00375 extern int rand_r(unsigned long *__ctx);
00406 extern char *itoa(int __val, char *__s, int __radix);
00407
00434 extern char *ltoa(long int __val, char *__s, int __radix);
00435
00460 extern char *utoa(unsigned int __val, char *__s, int __radix);
00461
00486 extern char *ultoa(unsigned long int __val, char *__s, int __radix);
00487
00490 #define RANDOM_MAX 0x7FFFFFFF
00491
00504 extern long random(void);
00509 extern void srandom(unsigned long __seed);
00510
00517 extern long random_r(unsigned long *__ctx);
00518 #endif
00519
00531 #define DTOSTR_ALWAYS_SIGN 0x01
00532
00534 #define DTOSTR_PLUS_SIGN 0x02
00535
00537 #define DTOSTR_UPPERCASE 0x04
00538
00539 #ifndef __ASSEMBLER__
00540
00563 extern char *dtostre(double __val, char *__s, unsigned char __prec,
00564 unsigned char __flags);
00565
00580 extern char *dtostrf(double __val, signed char __width,
00581 unsigned char __prec, char *__s);
00582
00585 #if 0
00586 extern int atexit(void (*)(void));
00587 #endif
00588
00589 #ifdef __cplusplus
00590 }
00591 #endif
00592
00593 #endif
00594
00595 #endif