fxlibc/include/stdlib.h
Lephenixnoir f5cca84ae8
stdlib: add and test strtod, strtof and atof (DONE)
This uses a generic function strto_fp similar to strto_int that is used
for strtol and its derivatives.
2021-05-21 23:56:35 +02:00

121 lines
2.7 KiB
C

#ifndef __STDLIB_H__
# define __STDLIB_H__
#include <stddef.h>
#include <stdint.h>
/* Dynamic memory management. */
/* Allocate SIZE bytes of memory. */
extern void *malloc(size_t __size);
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
extern void *calloc(size_t __nmemb, size_t __size);
/*
** Re-allocate the previously allocated block in PTR, making the new block
** SIZE bytes long.
*/
extern void *realloc(void *__ptr, size_t __size);
/*
** Re-allocate the previously allocated block in PTR, making the new block large
** enough for NMEMB elements of SIZE bytes each.
*/
extern void *reallocarray(void *__ptr, size_t __nmemb, size_t __size);
/* Free a block allocated by `malloc', `realloc' or `calloc'. */
extern void free(void *__ptr);
/* Integer arithmetic functions. */
extern int abs(int __j);
#define abs(j) ({ \
int __j = (j); \
(__j >= 0) ? __j : -(__j); \
})
extern long int labs(long int __j);
#define labs(j) ({ \
long int __j = (j); \
(__j >= 0) ? __j : -(__j); \
})
extern long long int llabs(long long int __j);
#define llabs(j) ({ \
long long int __j = (j); \
(__j >= 0) ? __j : -(__j); \
})
typedef struct {
int quot, rem;
} div_t;
typedef struct {
long int quot, rem;
} ldiv_t;
typedef struct {
long long int quot, rem;
} lldiv_t;
div_t div(int __num, int __denom);
ldiv_t ldiv(long int __num, long int __denom);
lldiv_t lldiv(long long int __num, long long int __denom);
/* Simplified numeric conversion functions. */
/* ASCII to int. */
extern int atoi(char const *__ptr);
/* ASCII to long int. */
extern long int atol(char const *__ptr);
/* ASCII to long long int. */
extern long long int atoll(char const *__ptr);
/* Numeric conversion functions. */
/* ASCII to floating-point. */
extern double atof(char const *__ptr);
/* Parse a long int from a string. */
extern long int strtol(
char const * restrict __ptr,
char ** restrict __endptr,
int __base);
/* Parse a long unsigned int from a string. */
extern unsigned long int strtoul(
char const * restrict __ptr,
char ** restrict __endptr,
int __base);
/* Parse a long long int from a string. */
extern long long int strtoll(
char const * restrict __ptr,
char ** restrict __endptr,
int __base);
/* Parse a long long unsigned int from a string. */
extern unsigned long long int strtoull(
char const * restrict __ptr,
char ** restrict __endptr,
int __base);
/* Parse a double from a string. */
extern double strtod(
char const * restrict __ptr,
char ** restrict __endptr);
/* Parse a float from a string. */
extern float strtof(
char const * restrict __ptr,
char ** restrict __endptr);
/* Parse a long double from a string. */
extern long double strtold(
char const * restrict __ptr,
char ** restrict __endptr);
#endif /*__STDLIB_H__*/