From d264ca2533d4c9de941f395a566cd7a769b8a192 Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Fri, 18 Sep 1992 16:54:40 +0000 Subject: [PATCH] Add ulong_to_integer and integer_to_ulong. --- v7/src/microcode/artutl.c | 27 +++++++++++++++++++++++++-- v7/src/microcode/extern.h | 4 +++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/v7/src/microcode/artutl.c b/v7/src/microcode/artutl.c index 39fe948d9..cb9a456ce 100644 --- a/v7/src/microcode/artutl.c +++ b/v7/src/microcode/artutl.c @@ -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) { diff --git a/v7/src/microcode/extern.h b/v7/src/microcode/extern.h index 58efead27..57695e9be 100644 --- a/v7/src/microcode/extern.h +++ b/v7/src/microcode/extern.h @@ -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)); -- 2.25.1