]> Pileus Git - ~andy/fetchmail/blobdiff - trio/trionan.h
Add new gai.c debug source.
[~andy/fetchmail] / trio / trionan.h
index 3fbed375664fff7b4b328b1dd3348a0c00505be7..a38b1cc26ff5450eed13463b14635c8bfb7480b6 100644 (file)
@@ -1,6 +1,6 @@
 /*************************************************************************
  *
- * $Id: trionan.h,v 1.7 2002/05/04 14:26:44 breese Exp $
+ * $Id: trionan.h,v 1.9 2005/03/27 18:52:45 breese Exp $
  *
  * Copyright (C) 2001 Bjorn Reese <breese@users.sourceforge.net>
  *
@@ -15,8 +15,8 @@
  *
  ************************************************************************/
 
-#ifndef TRIO_NAN_H
-#define TRIO_NAN_H
+#ifndef TRIO_TRIONAN_H
+#define TRIO_TRIONAN_H
 
 #include "triodef.h"
 
 extern "C" {
 #endif
 
+#if !defined(TRIO_PUBLIC_NAN)
+# if !defined(TRIO_PUBLIC)
+#  define TRIO_PUBLIC
+# endif
+# define TRIO_PUBLIC_NAN TRIO_PUBLIC
+#endif
+  
 enum {
   TRIO_FP_INFINITE,
   TRIO_FP_NAN,
@@ -32,50 +39,145 @@ enum {
   TRIO_FP_ZERO
 };
 
+/*************************************************************************
+ * Dependencies
+ */
+
+#if defined(TRIO_EMBED_NAN)
+
+/*
+ * The application that trionan is embedded in must define which functions
+ * it uses.
+ *
+ * The following resolves internal dependencies.
+ */
+  
+# if defined(TRIO_FUNC_ISNAN) \
+  || defined(TRIO_FUNC_ISINF)
+#  if !defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT)
+#   define TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT
+#  endif
+# endif
+
+# if defined(TRIO_FUNC_NAN)
+#  if !defined(TRIO_FUNC_PINF)
+#   define TRIO_FUNC_PINF
+#  endif
+# endif
+  
+# if defined(TRIO_FUNC_NINF)
+#  if !defined(TRIO_FUNC_PINF)
+#   define TRIO_FUNC_PINF
+#  endif
+# endif
+
+#else
+
+/*
+ * When trionan is not embedded all all functions are defined.
+ */
+  
+# define TRIO_FUNC_NAN
+# define TRIO_FUNC_PINF
+# define TRIO_FUNC_NINF
+# define TRIO_FUNC_NZERO
+# define TRIO_FUNC_ISNAN
+# define TRIO_FUNC_ISINF
+# define TRIO_FUNC_ISFINITE
+# define TRIO_FUNC_SIGNBIT
+# define TRIO_FUNC_FPCLASSIFY
+# define TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT
+  
+#endif
+
+/*************************************************************************
+ * Functions
+ */
+
 /*
  * Return NaN (Not-a-Number).
  */
-TRIO_PUBLIC double trio_nan TRIO_PROTO((void));
+#if defined(TRIO_FUNC_NAN)
+TRIO_PUBLIC_NAN double
+trio_nan
+TRIO_PROTO((void));
+#endif
 
 /*
  * Return positive infinity.
  */
-TRIO_PUBLIC double trio_pinf TRIO_PROTO((void));
+#if defined(TRIO_FUNC_PINF)
+TRIO_PUBLIC_NAN double
+trio_pinf
+TRIO_PROTO((void));
+#endif
 
 /*
  * Return negative infinity.
  */
-TRIO_PUBLIC double trio_ninf TRIO_PROTO((void));
-  
+#if defined(TRIO_FUNC_NINF)
+TRIO_PUBLIC_NAN double
+trio_ninf
+TRIO_PROTO((void));
+#endif
+
 /*
  * Return negative zero.
  */
-TRIO_PUBLIC double trio_nzero TRIO_PROTO((TRIO_NOARGS));
+#if defined(TRIO_FUNC_NZERO)
+TRIO_PUBLIC_NAN double
+trio_nzero
+TRIO_PROTO((TRIO_NOARGS));
+#endif
 
 /*
  * If number is a NaN return non-zero, otherwise return zero.
  */
-TRIO_PUBLIC int trio_isnan TRIO_PROTO((double number));
+#if defined(TRIO_FUNC_ISNAN)
+TRIO_PUBLIC_NAN int
+trio_isnan
+TRIO_PROTO((double number));
+#endif
 
 /*
  * If number is positive infinity return 1, if number is negative
  * infinity return -1, otherwise return 0.
  */
-TRIO_PUBLIC int trio_isinf TRIO_PROTO((double number));
+#if defined(TRIO_FUNC_ISINF)
+TRIO_PUBLIC_NAN int
+trio_isinf
+TRIO_PROTO((double number));
+#endif
 
 /*
  * If number is finite return non-zero, otherwise return zero.
  */
-TRIO_PUBLIC int trio_isfinite TRIO_PROTO((double number));
+#if defined(TRIO_FUNC_ISFINITE)
+TRIO_PUBLIC_NAN int
+trio_isfinite
+TRIO_PROTO((double number));
+#endif
 
-TRIO_PUBLIC int trio_signbit TRIO_PROTO((double number));
+#if defined(TRIO_FUNC_SIGNBIT)
+TRIO_PUBLIC_NAN int
+trio_signbit
+TRIO_PROTO((double number));
+#endif
 
-TRIO_PUBLIC int trio_fpclassify TRIO_PROTO((double number));
+#if defined(TRIO_FUNC_FPCLASSIFY)
+TRIO_PUBLIC_NAN int
+trio_fpclassify
+TRIO_PROTO((double number));
+#endif
 
-TRIO_PUBLIC int trio_fpclassify_and_signbit TRIO_PROTO((double number, int *is_negative));
+#if defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT)
+TRIO_PUBLIC_NAN int
+trio_fpclassify_and_signbit
+TRIO_PROTO((double number, int *is_negative));
+#endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* TRIO_NAN_H */
+#endif /* TRIO_TRIONAN_H */