api: add float limits locale math
authornsz <nsz@port70.net>
Sun, 14 Oct 2012 17:03:35 +0000 (19:03 +0200)
committernsz <nsz@port70.net>
Sun, 14 Oct 2012 17:03:35 +0000 (19:03 +0200)
src/api/float.c [new file with mode: 0644]
src/api/limits.c [new file with mode: 0644]
src/api/locale.c [new file with mode: 0644]
src/api/math.c [new file with mode: 0644]

diff --git a/src/api/float.c b/src/api/float.c
new file mode 100644 (file)
index 0000000..254e50d
--- /dev/null
@@ -0,0 +1,38 @@
+#include <float.h>
+#define C(n) switch(n){case n:;}
+#define D(n) {long double d = n;}
+static void f()
+{
+C(FLT_ROUNDS)
+C(FLT_EVAL_METHOD)
+C(FLT_RADIX)
+C(FLT_MANT_DIG)
+C(DBL_MANT_DIG)
+C(LDBL_MANT_DIG)
+C(DECIMAL_DIG)
+C(FLT_DIG)
+C(DBL_DIG)
+C(LDBL_DIG)
+C(FLT_MIN_EXP)
+C(DBL_MIN_EXP)
+C(LDBL_MIN_EXP)
+C(FLT_MIN_10_EXP)
+C(DBL_MIN_10_EXP)
+C(LDBL_MIN_10_EXP)
+C(FLT_MAX_EXP)
+C(DBL_MAX_EXP)
+C(LDBL_MAX_EXP)
+C(FLT_MAX_10_EXP)
+C(DBL_MAX_10_EXP)
+C(LDBL_MAX_10_EXP)
+D(FLT_MAX)
+D(DBL_MAX)
+D(LDBL_MAX)
+D(FLT_EPSILON)
+D(DBL_EPSILON)
+D(LDBL_EPSILON)
+D(FLT_MIN)
+D(DBL_MIN)
+D(LDBL_MIN)
+}
+
diff --git a/src/api/limits.c b/src/api/limits.c
new file mode 100644 (file)
index 0000000..8b311fc
--- /dev/null
@@ -0,0 +1,141 @@
+#include <limits.h>
+#define C(n) switch(n){case n:;}
+static void f()
+{
+C(AIO_LISTIO_MAX)
+C(AIO_MAX)
+C(AIO_PRIO_DELTA_MAX)
+C(ARG_MAX)
+C(ATEXIT_MAX)
+C(CHILD_MAX)
+C(DELAYTIMER_MAX)
+C(HOST_NAME_MAX)
+#ifdef _XOPEN_SOURCE
+C(IOV_MAX)
+#endif
+C(LOGIN_NAME_MAX)
+C(MQ_OPEN_MAX)
+C(MQ_PRIO_MAX)
+C(OPEN_MAX)
+C(PAGESIZE)
+#ifdef _XOPEN_SOURCE
+C(PAGE_SIZE)
+#endif
+C(PTHREAD_DESTRUCTOR_ITERATIONS)
+C(PTHREAD_KEYS_MAX)
+C(PTHREAD_STACK_MIN)
+C(PTHREAD_THREADS_MAX)
+C(RE_DUP_MAX)
+C(RTSIG_MAX)
+C(SEM_NSEMS_MAX)
+C(SEM_VALUE_MAX)
+C(SIGQUEUE_MAX)
+C(SS_REPL_MAX)
+C(STREAM_MAX)
+C(SYMLOOP_MAX)
+C(TIMER_MAX)
+C(TTY_NAME_MAX)
+C(TZNAME_MAX)
+C(FILESIZEBITS)
+C(LINK_MAX)
+C(MAX_CANON)
+C(MAX_INPUT)
+C(NAME_MAX)
+C(PATH_MAX)
+C(PIPE_BUF)
+C(POSIX_ALLOC_SIZE_MIN)
+C(POSIX_REC_INCR_XFER_SIZE)
+C(POSIX_REC_MAX_XFER_SIZE)
+C(POSIX_REC_MIN_XFER_SIZE)
+C(POSIX_REC_XFER_ALIGN)
+C(SYMLINK_MAX)
+C(BC_BASE_MAX)
+C(BC_DIM_MAX)
+C(BC_SCALE_MAX)
+C(BC_STRING_MAX)
+C(CHARCLASS_NAME_MAX)
+C(COLL_WEIGHTS_MAX)
+C(EXPR_NEST_MAX)
+C(LINE_MAX)
+C(NGROUPS_MAX)
+C(RE_DUP_MAX)
+C(_POSIX_CLOCKRES_MIN)
+C(_POSIX_AIO_LISTIO_MAX)
+C(_POSIX_AIO_MAX)
+C(_POSIX_ARG_MAX)
+C(_POSIX_CHILD_MAX)
+C(_POSIX_DELAYTIMER_MAX)
+C(_POSIX_HOST_NAME_MAX)
+C(_POSIX_LINK_MAX)
+C(_POSIX_LOGIN_NAME_MAX)
+C(_POSIX_MAX_CANON)
+C(_POSIX_MAX_INPUT)
+C(_POSIX_MQ_OPEN_MAX)
+C(_POSIX_MQ_PRIO_MAX)
+C(_POSIX_NAME_MAX)
+C(_POSIX_NGROUPS_MAX)
+C(_POSIX_OPEN_MAX)
+C(_POSIX_PATH_MAX)
+C(_POSIX_PIPE_BUF)
+C(_POSIX_RE_DUP_MAX)
+C(_POSIX_RTSIG_MAX)
+C(_POSIX_SEM_NSEMS_MAX)
+C(_POSIX_SEM_VALUE_MAX)
+C(_POSIX_SIGQUEUE_MAX)
+C(_POSIX_SSIZE_MAX)
+C(_POSIX_SS_REPL_MAX)
+C(_POSIX_STREAM_MAX)
+C(_POSIX_SYMLINK_MAX)
+C(_POSIX_SYMLOOP_MAX)
+C(_POSIX_THREAD_DESTRUCTOR_ITERATIONS)
+C(_POSIX_THREAD_KEYS_MAX)
+C(_POSIX_THREAD_THREADS_MAX)
+C(_POSIX_TIMER_MAX)
+C(_POSIX_TTY_NAME_MAX)
+C(_POSIX_TZNAME_MAX)
+C(_POSIX2_BC_BASE_MAX)
+C(_POSIX2_BC_DIM_MAX)
+C(_POSIX2_BC_SCALE_MAX)
+C(_POSIX2_BC_STRING_MAX)
+C(_POSIX2_CHARCLASS_NAME_MAX)
+C(_POSIX2_COLL_WEIGHTS_MAX)
+C(_POSIX2_EXPR_NEST_MAX)
+C(_POSIX2_LINE_MAX)
+#ifdef _XOPEN_SOURCE
+C(_XOPEN_IOV_MAX)
+C(_XOPEN_NAME_MAX)
+C(_XOPEN_PATH_MAX)
+#endif
+C(CHAR_BIT)
+C(CHAR_MAX)
+C(CHAR_MIN)
+C(INT_MAX)
+C(INT_MIN)
+C(LLONG_MAX)
+C(LLONG_MIN)
+C(LONG_BIT)
+C(LONG_MAX)
+C(LONG_MIN)
+C(MB_LEN_MAX)
+C(SCHAR_MAX)
+C(SCHAR_MIN)
+C(SHRT_MAX)
+C(SHRT_MIN)
+C(SSIZE_MAX)
+C(UCHAR_MAX)
+C(UINT_MAX)
+C(ULLONG_MAX)
+C(ULONG_MAX)
+C(USHRT_MAX)
+C(WORD_BIT)
+C(NL_ARGMAX)
+#ifdef _XOPEN_SOURCE
+C(NL_LANGMAX)
+#endif
+C(NL_MSGMAX)
+C(NL_SETMAX)
+C(NL_TEXTMAX)
+#ifdef _XOPEN_SOURCE
+C(NZERO)
+#endif
+}
diff --git a/src/api/locale.c b/src/api/locale.c
new file mode 100644 (file)
index 0000000..4143a97
--- /dev/null
@@ -0,0 +1,63 @@
+#include <locale.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(locale_t)
+{
+struct lconv x;
+F(char*,currency_symbol)
+F(char*,decimal_point)
+F(char,frac_digits)
+F(char*,grouping)
+F(char*,int_curr_symbol)
+F(char,int_frac_digits)
+F(char,int_n_cs_precedes)
+F(char,int_n_sep_by_space)
+F(char,int_n_sign_posn)
+F(char,int_p_cs_precedes)
+F(char,int_p_sep_by_space)
+F(char,int_p_sign_posn)
+F(char*,mon_decimal_point)
+F(char*,mon_grouping)
+F(char*,mon_thousands_sep)
+F(char*,negative_sign)
+F(char,n_cs_precedes)
+F(char,n_sep_by_space)
+F(char,n_sign_posn)
+F(char*,positive_sign)
+F(char,p_cs_precedes)
+F(char,p_sep_by_space)
+F(char,p_sign_posn)
+F(char*,thousands_sep)
+}
+#ifndef NULL
+#error no NULL
+#endif
+C(LC_ALL)
+C(LC_COLLATE)
+C(LC_CTYPE)
+#ifdef _POSIX_C_SOURCE
+C(LC_MESSAGES)
+#endif
+C(LC_MONETARY)
+C(LC_NUMERIC)
+C(LC_TIME)
+#ifdef _POSIX_C_SOURCE
+C(LC_ALL_MASK)
+C(LC_COLLATE_MASK)
+C(LC_CTYPE_MASK)
+C(LC_MESSAGES_MASK)
+C(LC_MONETARY_MASK)
+C(LC_NUMERIC_MASK)
+C(LC_TIME_MASK)
+{locale_t x = LC_GLOBAL_LOCALE;}
+locale_t(*p_duplocale)(locale_t) = duplocale;
+void(*p_freelocale)(locale_t) = freelocale;
+locale_t(*p_newlocale)(int,const char*,locale_t) = newlocale;
+locale_t(*p_uselocale)(locale_t) = uselocale;
+#endif
+struct lconv*(*p_localeconv)(void) = localeconv;
+char*(*p_setlocale)(int,const char*) = setlocale;
+}
diff --git a/src/api/math.c b/src/api/math.c
new file mode 100644 (file)
index 0000000..20819d9
--- /dev/null
@@ -0,0 +1,235 @@
+#include <math.h>
+#define T(t) (t*)0;
+#define C(n) switch(n){case n:;}
+#define I(n) {int i = n;}
+#define D(n) {double d = n;}
+static void f()
+{
+T(float_t)
+T(double_t)
+I(fpclassify(.0))
+I(isfinite(.0))
+I(isgreater(.0,.0))
+I(isgreaterequal(.0,.0))
+I(isinf(.0))
+I(isless(.0,.0))
+I(islessequal(.0,.0))
+I(islessgreater(.0,.0))
+I(isnan(.0))
+I(isnormal(.0))
+I(isunordered(.0,.0))
+I(signbit(.0))
+#ifdef _XOPEN_SOURCE
+I(signgam)
+D(M_E)
+D(M_LOG2E)
+D(M_LOG10E)
+D(M_LN2)
+D(M_LN10)
+D(M_PI)
+D(M_PI_2)
+D(M_PI_4)
+D(M_1_PI)
+D(M_2_PI)
+D(M_2_SQRTPI)
+D(M_SQRT2)
+D(M_SQRT1_2)
+D(MAXFLOAT)
+#endif
+D(HUGE_VAL)
+D(HUGE_VALF)
+D(HUGE_VALL)
+D(INFINITY)
+D(NAN)
+C(FP_INFINITE)
+C(FP_NAN)
+C(FP_NORMAL)
+C(FP_SUBNORMAL)
+C(FP_ZERO)
+C(FP_ILOGB0)
+C(FP_ILOGBNAN)
+C(MATH_ERRNO)
+C(MATH_ERREXCEPT)
+C(math_errhandling)
+double(*p_acos)(double) = acos;
+float(*p_acosf)(float) = acosf;
+double(*p_acosh)(double) = acosh;
+float(*p_acoshf)(float) = acoshf;
+long double(*p_acoshl)(long double) = acoshl;
+long double(*p_acosl)(long double) = acosl;
+double(*p_asin)(double) = asin;
+float(*p_asinf)(float) = asinf;
+double(*p_asinh)(double) = asinh;
+float(*p_asinhf)(float) = asinhf;
+long double(*p_asinhl)(long double) = asinhl;
+long double(*p_asinl)(long double) = asinl;
+double(*p_atan)(double) = atan;
+double(*p_atan2)(double,double) = atan2;
+float(*p_atan2f)(float,float) = atan2f;
+long double(*p_atan2l)(long double,long double) = atan2l;
+float(*p_atanf)(float) = atanf;
+double(*p_atanh)(double) = atanh;
+float(*p_atanhf)(float) = atanhf;
+long double(*p_atanhl)(long double) = atanhl;
+long double(*p_atanl)(long double) = atanl;
+double(*p_cbrt)(double) = cbrt;
+float(*p_cbrtf)(float) = cbrtf;
+long double(*p_cbrtl)(long double) = cbrtl;
+double(*p_ceil)(double) = ceil;
+float(*p_ceilf)(float) = ceilf;
+long double(*p_ceill)(long double) = ceill;
+double(*p_copysign)(double,double) = copysign;
+float(*p_copysignf)(float,float) = copysignf;
+long double(*p_copysignl)(long double,long double) = copysignl;
+double(*p_cos)(double) = cos;
+float(*p_cosf)(float) = cosf;
+double(*p_cosh)(double) = cosh;
+float(*p_coshf)(float) = coshf;
+long double(*p_coshl)(long double) = coshl;
+long double(*p_cosl)(long double) = cosl;
+double(*p_erf)(double) = erf;
+double(*p_erfc)(double) = erfc;
+float(*p_erfcf)(float) = erfcf;
+long double(*p_erfcl)(long double) = erfcl;
+float(*p_erff)(float) = erff;
+long double(*p_erfl)(long double) = erfl;
+double(*p_exp)(double) = exp;
+double(*p_exp2)(double) = exp2;
+float(*p_exp2f)(float) = exp2f;
+long double(*p_exp2l)(long double) = exp2l;
+float(*p_expf)(float) = expf;
+long double(*p_expl)(long double) = expl;
+double(*p_expm1)(double) = expm1;
+float(*p_expm1f)(float) = expm1f;
+long double(*p_expm1l)(long double) = expm1l;
+double(*p_fabs)(double) = fabs;
+float(*p_fabsf)(float) = fabsf;
+long double(*p_fabsl)(long double) = fabsl;
+double(*p_fdim)(double,double) = fdim;
+float(*p_fdimf)(float,float) = fdimf;
+long double(*p_fdiml)(long double,long double) = fdiml;
+double(*p_floor)(double) = floor;
+float(*p_floorf)(float) = floorf;
+long double(*p_floorl)(long double) = floorl;
+double(*p_fma)(double,double,double) = fma;
+float(*p_fmaf)(float,float,float) = fmaf;
+long double(*p_fmal)(long double,long double,long double) = fmal;
+double(*p_fmax)(double,double) = fmax;
+float(*p_fmaxf)(float,float) = fmaxf;
+long double(*p_fmaxl)(long double,long double) = fmaxl;
+double(*p_fmin)(double,double) = fmin;
+float(*p_fminf)(float,float) = fminf;
+long double(*p_fminl)(long double,long double) = fminl;
+double(*p_fmod)(double,double) = fmod;
+float(*p_fmodf)(float,float) = fmodf;
+long double(*p_fmodl)(long double,long double) = fmodl;
+double(*p_frexp)(double,int*) = frexp;
+float(*p_frexpf)(float,int*) = frexpf;
+long double(*p_frexpl)(long double,int*) = frexpl;
+double(*p_hypot)(double,double) = hypot;
+float(*p_hypotf)(float,float) = hypotf;
+long double(*p_hypotl)(long double,long double) = hypotl;
+int(*p_ilogb)(double) = ilogb;
+int(*p_ilogbf)(float) = ilogbf;
+int(*p_ilogbl)(long double) = ilogbl;
+#ifdef _XOPEN_SOURCE
+double(*p_j0)(double) = j0;
+double(*p_j1)(double) = j1;
+double(*p_jn)(int,double) = jn;
+#endif
+double(*p_ldexp)(double,int) = ldexp;
+float(*p_ldexpf)(float,int) = ldexpf;
+long double(*p_ldexpl)(long double,int) = ldexpl;
+double(*p_lgamma)(double) = lgamma;
+float(*p_lgammaf)(float) = lgammaf;
+long double(*p_lgammal)(long double) = lgammal;
+long long(*p_llrint)(double) = llrint;
+long long(*p_llrintf)(float) = llrintf;
+long long(*p_llrintl)(long double) = llrintl;
+long long(*p_llround)(double) = llround;
+long long(*p_llroundf)(float) = llroundf;
+long long(*p_llroundl)(long double) = llroundl;
+double(*p_log)(double) = log;
+double(*p_log10)(double) = log10;
+float(*p_log10f)(float) = log10f;
+long double(*p_log10l)(long double) = log10l;
+double(*p_log1p)(double) = log1p;
+float(*p_log1pf)(float) = log1pf;
+long double(*p_log1pl)(long double) = log1pl;
+double(*p_log2)(double) = log2;
+float(*p_log2f)(float) = log2f;
+long double(*p_log2l)(long double) = log2l;
+double(*p_logb)(double) = logb;
+float(*p_logbf)(float) = logbf;
+long double(*p_logbl)(long double) = logbl;
+float(*p_logf)(float) = logf;
+long double(*p_logl)(long double) = logl;
+long(*p_lrint)(double) = lrint;
+long(*p_lrintf)(float) = lrintf;
+long(*p_lrintl)(long double) = lrintl;
+long(*p_lround)(double) = lround;
+long(*p_lroundf)(float) = lroundf;
+long(*p_lroundl)(long double) = lroundl;
+double(*p_modf)(double,double*) = modf;
+float(*p_modff)(float,float*) = modff;
+long double(*p_modfl)(long double,long double*) = modfl;
+double(*p_nan)(const char*) = nan;
+float(*p_nanf)(const char*) = nanf;
+long double(*p_nanl)(const char*) = nanl;
+double(*p_nearbyint)(double) = nearbyint;
+float(*p_nearbyintf)(float) = nearbyintf;
+long double(*p_nearbyintl)(long double) = nearbyintl;
+double(*p_nextafter)(double,double) = nextafter;
+float(*p_nextafterf)(float,float) = nextafterf;
+long double(*p_nextafterl)(long double,long double) = nextafterl;
+double(*p_nexttoward)(double,long double) = nexttoward;
+float(*p_nexttowardf)(float,long double) = nexttowardf;
+long double(*p_nexttowardl)(long double,long double) = nexttowardl;
+double(*p_pow)(double,double) = pow;
+float(*p_powf)(float,float) = powf;
+long double(*p_powl)(long double,long double) = powl;
+double(*p_remainder)(double,double) = remainder;
+float(*p_remainderf)(float,float) = remainderf;
+long double(*p_remainderl)(long double,long double) = remainderl;
+double(*p_remquo)(double,double,int*) = remquo;
+float(*p_remquof)(float,float,int*) = remquof;
+long double(*p_remquol)(long double,long double,int*) = remquol;
+double(*p_rint)(double) = rint;
+float(*p_rintf)(float) = rintf;
+long double(*p_rintl)(long double) = rintl;
+double(*p_round)(double) = round;
+float(*p_roundf)(float) = roundf;
+long double(*p_roundl)(long double) = roundl;
+double(*p_scalbln)(double,long) = scalbln;
+float(*p_scalblnf)(float,long) = scalblnf;
+long double(*p_scalblnl)(long double,long) = scalblnl;
+double(*p_scalbn)(double,int) = scalbn;
+float(*p_scalbnf)(float,int) = scalbnf;
+long double(*p_scalbnl)(long double,int) = scalbnl;
+double(*p_sin)(double) = sin;
+float(*p_sinf)(float) = sinf;
+double(*p_sinh)(double) = sinh;
+float(*p_sinhf)(float) = sinhf;
+long double(*p_sinhl)(long double) = sinhl;
+long double(*p_sinl)(long double) = sinl;
+double(*p_sqrt)(double) = sqrt;
+float(*p_sqrtf)(float) = sqrtf;
+long double(*p_sqrtl)(long double) = sqrtl;
+double(*p_tan)(double) = tan;
+float(*p_tanf)(float) = tanf;
+double(*p_tanh)(double) = tanh;
+float(*p_tanhf)(float) = tanhf;
+long double(*p_tanhl)(long double) = tanhl;
+long double(*p_tanl)(long double) = tanl;
+double(*p_tgamma)(double) = tgamma;
+float(*p_tgammaf)(float) = tgammaf;
+long double(*p_tgammal)(long double) = tgammal;
+double(*p_trunc)(double) = trunc;
+float(*p_truncf)(float) = truncf;
+long double(*p_truncl)(long double) = truncl;
+#ifdef _XOPEN_SOURCE
+double(*p_y0)(double) = y0;
+double(*p_y1)(double) = y1;
+double(*p_yn)(int,double) = yn;
+#endif
+}