]> www.ginac.de Git - cln.git/blobdiff - include/cln/types.h
* include/cln/types.h ([su]intE): 64-bit exponents for MIPS and RS6000.
[cln.git] / include / cln / types.h
index 1ed0c0a6385014e3e621d6d9a6b995e7fe8766c1..8bb8f92fde5ab418a793834031d0156a3c169701 100644 (file)
     typedef uint64 uintQ;
   #endif
 
-// Boolean type.
-#if 1
-  typedef enum { cl_false = 0, cl_true = 1 }
-          cl_boolean;
-#else
-  typedef bool cl_boolean;
-  #define cl_false 0
-  #define cl_true  1
-#endif
-
 // Type for three values (0, +1, -1).
   typedef int  cl_signean;
   #define signean_plus  1
@@ -85,6 +75,7 @@
   #define signean_minus -1
 
 // Integer type used for counters.
+// Constraint: sizeof(uintC) >= sizeof(uintL)
   #if (defined(HAVE_FAST_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || defined(__x86_64__)))
     #define intCsize long_bitsize
     typedef long           sintC;
     typedef unsigned int  uintC;
   #endif
 
+// Integer type used for lfloat exponents.
+// Constraint: sizeof(uintE) >= sizeof(uintC)
+#if (defined(HAVE_LONGLONG) && (defined(__alpha__) || defined(__ia64__) || defined(__powerpc64__) || defined(__x86_64__) || defined(__i386__) || defined(__mips__) || defined(__rs6000__)))
+    #define intEsize 64
+    typedef sint64  sintE;
+    typedef uint64  uintE;
+  #else
+    #define intEsize 32
+    typedef sint32  sintE;
+    typedef uint32  uintE;
+  #endif
+
 // Integer type as large as a pointer.
 // Assumption: sizeof(long) == sizeof(void*)
   #define intPsize long_bitsize
   typedef long           sintP;
   typedef unsigned long  uintP;
 
+// Integer type used for the value of a fixnum.
+  #define intVsize long_bitsize
+  typedef long           sintV;
+  typedef unsigned long  uintV;
+
 // Numbers in the heap are stored as "digit" sequences.
 // A digit is an unsigned int with intDsize bits.
 // intDsize should be 8 or 16 or 32 or 64 and it should match mp_limb_t,