changeset 39631:3d61dd23854a

(MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM) (FIXNUM_OVERFLOW_P): New macros.
author Gerd Moellmann <gerd@gnu.org>
date Sat, 06 Oct 2001 23:25:06 +0000
parents ace21ec30053
children 8cd74f2aa6e2
files src/lisp.h
diffstat 1 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lisp.h	Sat Oct 06 23:24:15 2001 +0000
+++ b/src/lisp.h	Sat Oct 06 23:25:06 2001 +0000
@@ -387,6 +387,10 @@
 #define make_number(N)		\
   ((((EMACS_INT) (N)) & VALMASK) | ((EMACS_INT) Lisp_Int) << VALBITS)
 
+#define make_fixnum(x) make_number (x)
+#define MOST_NEGATIVE_FIXNUM	((EMACS_INT) 1 << (VALBITS - 1))
+#define MOST_POSITIVE_FIXNUM	(MOST_NEGATIVE_FIXNUM - 1)
+
 /* During garbage collection, XGCTYPE must be used for extracting types
  so that the mark bit is ignored.  XMARKBIT accesses the markbit.
  Markbits are used only in particular slots of particular structure types.
@@ -468,6 +472,16 @@
 
 #endif /* NO_UNION_TYPE */
 
+/* Largest and smallest representable fixnum values.  */
+
+#define MOST_NEGATIVE_FIXNUM	((EMACS_INT) 1 << (VALBITS - 1))
+#define MOST_POSITIVE_FIXNUM	(MOST_NEGATIVE_FIXNUM - 1)
+
+/* Value is non-zero if C integer I doesn't fit into a Lisp fixnum.  */
+
+#define FIXNUM_OVERFLOW_P(i) \
+  ((i) > MOST_POSITIVE_FIXNUM || (i) < MOST_NEGATIVE_FIXNUM)
+
 /* Extract a value or address from a Lisp_Object.  */
 
 #define XCONS(a) (eassert (GC_CONSP(a)),(struct Lisp_Cons *) XPNTR(a))