#include #include #include #include #include #include #include #include "export.h" #define PARSE_FP(fp_type, func, huge_val) \ fp_type parse_ ## fp_type (Pointer repr, int *status) {\ char *f = (char*)repr;\ char *tmp;\ fp_type result; \ int saved_errno = errno;\ \ errno = 0;\ result = func(f, &tmp);\ \ if (errno == ERANGE) {\ if (result == huge_val)\ *status = 1;\ else\ *status = -1;\ }\ errno = saved_errno;\ \ if (f + strlen(f) != tmp)\ *status = 2;\ return result;\ } PARSE_FP(float, strtof, HUGE_VALF) PARSE_FP(double, strtod, HUGE_VAL) int64_t conv_word64_to_int64(uint64_t word) { return word; } uint64_t conv_int64_to_word64(int64_t i) { return i; } int32_t conv_word64_to_int32(uint64_t word) { return word; } uint64_t conv_int32_to_word64(int32_t i) { return i; }