#ifndef __STDLIB_P_H__ # define __STDLIB_P_H__ #include #include /* ** Parse an integer from a string. This is the base function for strtol, ** strtoul, strtoll, and strtoull. ** ** This function does not set errno, and instead returns the error code ** according to conversion rules. Setting errno is troublesome because it's a ** global state that cannot be reverted and thus cannot be tested. ** ** If outl is non-NULL, strto_int produces a long or an unsigned long result ** (depending on use_unsigned). Signedness only affects the range of values ** that are considered to be ERANGE, and both results are stored in *outl. ** Similarly, if outll is non-NULL, strto_int produces a long long or unsigned ** long long result. Only one pointer should be non-NULL. ** ** On platforms where long is 32-bit, 64-bit operations are performed only if ** outll is non-NULL. This is because multiplications with overflow can be ** expensive. */ int __strto_int( char const * restrict __ptr, char ** restrict __endptr, int __base, long *__outl, long long *__outll, bool __use_unsigned); /* ** Parse a floating-point value from a string. This is the base function for ** strtod, strtof, and strtold. ** ** This function is similar to strto_int(). If returns the error code to set in ** errno, and can produce one of three outputs depending on which of out, outf ** and outl is set. */ int __strto_fp( char const * restrict __ptr, char ** restrict __endptr, double *__out, float *__outf, long double *__outl); #endif /*__STDLIB_P_H__*/