diff options
author | mrb0nk500 <b0nk@b0nk.xyz> | 2023-02-03 13:27:31 -0400 |
---|---|---|
committer | mrb0nk500 <b0nk@b0nk.xyz> | 2023-02-03 13:27:31 -0400 |
commit | fa6928e23fb6dcff6ba9e409ac82c76e777dfdaa (patch) | |
tree | 8cdea9e4e37be91acf5fafcc7a9b58928a124571 | |
parent | f2eabdb6257c09cf2890dac5e9737912728542af (diff) |
sdk: Use `NMWException.h`, and `fdlibm.h` from prime decomp project
-rw-r--r-- | include/NMWException.h | 36 | ||||
-rw-r--r-- | include/fdlibm.h | 152 |
2 files changed, 60 insertions, 128 deletions
diff --git a/include/NMWException.h b/include/NMWException.h index 9cf7e48..d3e6290 100644 --- a/include/NMWException.h +++ b/include/NMWException.h @@ -1,26 +1,36 @@ -#ifndef NMWEXCEPTION_H -#define NMWEXCEPTION_H +#ifndef _NMWEXCEPTION +#define _NMWEXCEPTION + +#include <stddef.h> #ifdef __cplusplus extern "C" { #endif -typedef void (dtor_func)(void *object, int free_object); -typedef struct destructor_chain dtor_chain; +#define CTORARG_TYPE int +#define CTORARG_PARTIAL (0) +#define CTORARG_COMPLETE (1) + +#define CTORCALL_COMPLETE(ctor, objptr) \ + (((void (*)(void*, CTORARG_TYPE))ctor)(objptr, CTORARG_COMPLETE)) + +#define DTORARG_TYPE int -struct destructor_chain { - dtor_chain *next; - dtor_func *destructor; - void *object; -}; +#define DTORCALL_COMPLETE(dtor, objptr) (((void (*)(void*, DTORARG_TYPE))dtor)(objptr, -1)) + +typedef struct DestructorChain { + struct DestructorChain* next; + void* destructor; + void* object; +} DestructorChain; void __unregister_fragment(int fragmentID); -int __register_fragment(struct __eti_init_info *info, char *TOC); -void *__register_global_object(void *object, dtor_func *destructor, dtor_chain *regmem); -void __destroy_global_chain(); +int __register_fragment(struct __eti_init_info* info, char* TOC); +void* __register_global_object(void* object, void* destructor, void* regmem); +void __destroy_global_chain(void); #ifdef __cplusplus } #endif -#endif +#endif // _NMWEXCEPTION diff --git a/include/fdlibm.h b/include/fdlibm.h index 2b3388c..5040cae 100644 --- a/include/fdlibm.h +++ b/include/fdlibm.h @@ -1,46 +1,34 @@ -#ifndef _FDLIBM_H -#define _FDLIBM_H - -/* @(#)fdlibm.h 1.5 04/04/22 */ +/* @(#)fdlibm.h 1.2 95/01/04 */ /* * ==================================================== - * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved. + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. * + * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */ - -#ifdef __cplusplus -extern "C" { -#endif // ifdef __cplusplus - -/* Sometimes it's necessary to define __LITTLE_ENDIAN explicitly - but these catch some common cases. */ - -#if defined(i386) || defined(i486) || defined(intel) || defined(x86) || defined(i86pc) || defined(__alpha) || defined(__osf__) -#define __LITTLE_ENDIAN +#ifdef __STDC__ +#include <errno.h> +#include <math.h> #endif -#ifdef __LITTLE_ENDIAN -#define __HI(x) *(1 + (int*)&x) -#define __LO(x) *(int*)&x -#define __HIp(x) *(1 + (int*)x) -#define __LOp(x) *(int*)x +#define _IEEE_LIBM + +#if __option(little_endian) +#define __HIp(x) *(1 + (_INT32*)x) +#define __LOp(x) *(_INT32*)x #else -#define __HI(x) *(int*)&x -#define __LO(x) *(1 + (int*)&x) -#define __HIp(x) *(int*)x -#define __LOp(x) *(1 + (int*)x) +#define __HIp(x) *(_INT32*)x +#define __LOp(x) *(1 + (_INT32*)x) #endif -// TODO: should __STDC__ actually be defined? -// #ifdef __STDC__ +#ifdef __STDC__ #define __P(p) p -// #else -// #define __P(p) () -// #endif +#else +#define __P(p) () +#endif /* * ANSI/POSIX @@ -50,10 +38,10 @@ extern int signgam; #define MAXFLOAT ((float)3.40282346638528860e+38) -enum fdversion { fdlibmIeee = -1, fdlibmSvid, fdlibmXopen, fdlibmPosix }; +enum fdversion { fdlibm_ieee = -1, fdlibm_svid, fdlibm_xopen, fdlibm_posix }; #define _LIB_VERSION_TYPE enum fdversion -#define _LIB_VERSION _fdlib_version +#define _LIB_VERSION _fdlib_version /* if global variable _LIB_VERSION is not desirable, one may * change the following to be a constant by: @@ -64,17 +52,17 @@ enum fdversion { fdlibmIeee = -1, fdlibmSvid, fdlibmXopen, fdlibmPosix }; */ extern _LIB_VERSION_TYPE _LIB_VERSION; -#define _IEEE_ fdlibmIeee -#define _SVID_ fdlibmSvid -#define _XOPEN_ fdlibmXopen -#define _POSIX_ fdlibmPosix +#define _IEEE_ fdlibm_ieee +#define _SVID_ fdlibm_svid +#define _XOPEN_ fdlibm_xopen +#define _POSIX_ fdlibm_posix struct exception { - int type; - char* name; - double arg1; - double arg2; - double retval; + int type; + char* name; + double arg1; + double arg2; + double retval; }; #define HUGE MAXFLOAT @@ -86,69 +74,16 @@ struct exception { #define X_TLOSS 1.41484755040568800000e+16 -#define DOMAIN 1 -#define SING 2 -#define OVERFLOW 3 +#define DOMAIN 1 +#define SING 2 +#define OVERFLOW 3 #define UNDERFLOW 4 -#define TLOSS 5 -#define PLOSS 6 +#define TLOSS 5 +#define PLOSS 6 /* * ANSI/POSIX */ -extern double acos __P((double)); -extern double asin __P((double)); -extern double atan __P((double)); -extern double atan2 __P((double, double)); -extern double cos __P((double)); -extern double sin __P((double)); -extern double tan __P((double)); - -extern double cosh __P((double)); -extern double sinh __P((double)); -extern double tanh __P((double)); - -extern double exp __P((double)); -extern double frexp __P((double, int*)); -extern double ldexp __P((double, int)); -extern double log __P((double)); -extern double log10 __P((double)); -extern double modf __P((double, double*)); - -extern double pow __P((double, double)); -extern double sqrt __P((double)); - -extern double ceil __P((double)); -extern double fabs __P((double)); -extern double floor __P((double)); -extern double fmod __P((double, double)); - -extern double erf __P((double)); -extern double erfc __P((double)); -extern double gamma __P((double)); -extern double hypot __P((double, double)); -extern int isnan __P((double)); -extern int finite __P((double)); -extern double j0 __P((double)); -extern double j1 __P((double)); -extern double jn __P((int, double)); -extern double lgamma __P((double)); -extern double y0 __P((double)); -extern double y1 __P((double)); -extern double yn __P((int, double)); - -extern double acosh __P((double)); -extern double asinh __P((double)); -extern double atanh __P((double)); -extern double cbrt __P((double)); -extern double logb __P((double)); -extern double nextafter __P((double, double)); -extern double remainder __P((double, double)); -#ifdef _SCALB_INT -extern double scalb __P((double, int)); -#else -extern double scalb __P((double, double)); -#endif extern int matherr __P((struct exception*)); @@ -160,16 +95,12 @@ extern double significand __P((double)); /* * Functions callable from C, intended to support IEEE arithmetic. */ -extern double copysign __P((double, double)); + extern int ilogb __P((double)); -extern double rint __P((double)); -extern double scalbn __P((double, int)); /* * BSD math library entry points */ -extern double expm1 __P((double)); -extern double log1p __P((double)); /* * Reentrant version of gamma & lgamma; passes signgam back by reference @@ -206,22 +137,13 @@ extern double __ieee754_y1 __P((double)); extern double __ieee754_jn __P((int, double)); extern double __ieee754_yn __P((int, double)); extern double __ieee754_remainder __P((double, double)); -extern int __ieee754_remPio2 __P((double, double*)); -#ifdef _SCALB_INT +extern int __ieee754_rem_pio2 __P((double, double*)); + extern double __ieee754_scalb __P((double, int)); -#else -extern double __ieee754_scalb __P((double, double)); -#endif /* fdlibm kernel function */ extern double __kernel_standard __P((double, double, int)); extern double __kernel_sin __P((double, double, int)); extern double __kernel_cos __P((double, double)); extern double __kernel_tan __P((double, double, int)); -extern int __kernel_remPio2 __P((double*, double*, int, int, int, const int*)); - -#ifdef __cplusplus -}; -#endif // ifdef __cplusplus - -#endif +extern int __kernel_rem_pio2 __P((double*, double*, int, int, int, const int*)); |