X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=utils.lisp;h=208a87e1ba4f6dbc0d2c40ee799b3b46be061c7e;hb=188873f068b0c53febe4ee0ededbc755fce4869d;hp=974da721d318d7b6ba0ebb04ceb201ea3664a9ae;hpb=63e2c4c3263fc0e5feaff7498350829f4bbdfcec;p=umlisp.git diff --git a/utils.lisp b/utils.lisp index 974da72..208a87e 100644 --- a/utils.lisp +++ b/utils.lisp @@ -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