X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=utils.lisp;h=7fa3395f2ca870887c308b0c920f5854d4c88e4b;hb=9b9c48233072a8f64c9677d9b92b5eb956f4079d;hp=974da721d318d7b6ba0ebb04ceb201ea3664a9ae;hpb=aeade16272b79115d3f307906c7a3e9597137e97;p=umlisp.git diff --git a/utils.lisp b/utils.lisp index 974da72..7fa3395 100644 --- a/utils.lisp +++ b/utils.lisp @@ -10,7 +10,7 @@ ;;;; $Id$ ;;;; ;;;; This file, part of UMLisp, is -;;;; Copyright (c) 2000-2004 by Kevin M. Rosenberg, M.D. +;;;; Copyright (c) 2000-2006 by Kevin M. Rosenberg, M.D. ;;;; ;;;; UMLisp users are granted the rights to distribute and use this software ;;;; as governed by the terms of the GNU General Public License. @@ -76,6 +76,15 @@ (nth-value 0 (parse-integer tui)))) tui)) +(defun parse-aui (aui) + (declare (optimize (speed 3) (safety 0))) + (if (stringp aui) + (let ((ch (schar aui 0))) + (if (char-equal ch #\A) + (parse-ui aui) + (nth-value 0 (parse-integer aui)))) + aui)) + (defun parse-eui (eui) (declare (optimize (speed 3) (safety 0))) (if (stringp eui) @@ -86,13 +95,29 @@ eui)) (defconstant +cuisui-scale+ 10000000) -(declaim (type fixnum +cuisui-scale+)) +(declaim (type (integer 0 10000000) +cuisui-scale+)) + +#+64bit +(defun make-cuisui (cui sui) + (declare (fixnum cui sui) + (optimize (speed 3) (safety 0) (space 0))) + (the fixnum + (+ (the fixnum (* +cuisui-scale+ cui)) sui))) +#-64bit (defun make-cuisui (cui sui) (declare (fixnum cui sui) (optimize (speed 3) (safety 0) (space 0))) (+ (* +cuisui-scale+ cui) sui)) +#+64bit +(defun make-cuilui (cui lui) + (declare (fixnum cui lui) + (optimize (speed 3) (safety 0) (space 0))) + (the fixnum + (+ (the fixnum (* +cuisui-scale+ cui)) lui))) + +#-64bit (defun make-cuilui (cui lui) (declare (fixnum cui lui) (optimize (speed 3) (safety 0) (space 0))) @@ -100,6 +125,8 @@ (defun decompose-cuisui (cuisui) "Returns the CUI and SUI of a cuisui number" + #-64bit (declare (integer cuisui)) + #+64bit (declare (fixnum cuisui)) (floor cuisui +cuisui-scale+)) ;;; Lookup functions for uterms,ustr in ucons