r9507: rrf updates
[umlisp.git] / utils.lisp
index 974da721d318d7b6ba0ebb04ceb201ea3664a9ae..208a87e1ba4f6dbc0d2c40ee799b3b46be061c7e 100644 (file)
            (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)
     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)))
 
 (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