Add ulong_to_integer and integer_to_ulong.
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Fri, 18 Sep 1992 16:54:40 +0000 (16:54 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Fri, 18 Sep 1992 16:54:40 +0000 (16:54 +0000)
v7/src/microcode/artutl.c
v7/src/microcode/extern.h

index 39fe948d9b32238b40218c7572043fb32218e239..cb9a456ce55912f98bd4f631ea44524ac156786e 100644 (file)
@@ -1,8 +1,8 @@
 /* -*-C-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/artutl.c,v 1.8 1992/01/20 16:09:23 jinx Exp $
+$Id: artutl.c,v 1.9 1992/09/18 16:54:06 jinx Exp $
 
-Copyright (c) 1989-92 Massachusetts Institute of Technology
+Copyright (c) 1989-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -79,6 +79,29 @@ DEFUN (long_to_integer, (number), long number)
      : (long_to_bignum (number)));
 }
 
+unsigned long
+DEFUN (integer_to_ulong,
+       (n),
+       fast SCHEME_OBJECT n)
+{
+  return ((FIXNUM_P (n))
+         ? ((unsigned long) (FIXNUM_TO_LONG (n)))
+         : (bignum_to_ulong (n)));
+}
+
+SCHEME_OBJECT
+DEFUN (ulong_to_integer, (number), unsigned long number)
+{
+  long signed = ((long) number);
+  if (signed >= 0)
+    return
+      ((LONG_TO_FIXNUM_P (number))
+       ? (LONG_TO_FIXNUM (number))
+       : (long_to_bignum (number)));
+  else
+    return (ulong_to_bignum (number));
+}
+
 Boolean
 DEFUN (integer_to_double_p, (n), fast SCHEME_OBJECT n)
 {
index 58efead27632498c9703081cf3a6a2a863b1e2bb..57695e9befc5339953fa3c561a8b493bf0d7775d 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: extern.h,v 9.47 1992/09/11 21:59:11 cph Exp $
+$Id: extern.h,v 9.48 1992/09/18 16:54:40 jinx Exp $
 
 Copyright (c) 1987-1992 Massachusetts Institute of Technology
 
@@ -165,6 +165,8 @@ extern SCHEME_OBJECT EXFUN (double_to_flonum, (double));
 extern Boolean EXFUN (integer_to_long_p, (SCHEME_OBJECT));
 extern long EXFUN (integer_to_long, (SCHEME_OBJECT));
 extern SCHEME_OBJECT EXFUN (long_to_integer, (long));
+extern unsigned long EXFUN (integer_to_ulong, (SCHEME_OBJECT));
+extern SCHEME_OBJECT EXFUN (ulong_to_integer, (unsigned long));
 extern Boolean EXFUN (integer_to_double_p, (SCHEME_OBJECT));
 extern double EXFUN (integer_to_double, (SCHEME_OBJECT));
 extern SCHEME_OBJECT EXFUN (double_to_integer, (double));