r5181: *** empty log message ***
[umlisp.git] / class-support.lisp
index f7975e714f02143631b0f18921fb38b622a928b4..7614a1565902128339d2d121a92afca98266da19 100644 (file)
@@ -7,10 +7,10 @@
 ;;;; Author:       Kevin M. Rosenberg
 ;;;; Date Started: Apr 2000
 ;;;;
-;;;; $Id: class-support.lisp,v 1.9 2003/05/26 14:53:33 kevin Exp $
+;;;; $Id: class-support.lisp,v 1.14 2003/06/17 04:56:02 kevin Exp $
 ;;;;
 ;;;; This file, part of UMLisp, is
-;;;;    Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
+;;;;    Copyright (c) 2000-2003 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.
@@ -21,8 +21,6 @@
 
 ;;; Formatting routines
 
-
-
 (defgeneric fmt-cui (c))
 (defmethod fmt-cui ((c ucon))
   (fmt-cui (cui c)))
 (defmethod fmt-eui ((e null))
   (format nil "nil"))
 
+(defun cui-p (ui)
+  "Check if a string is a CUI"
+  (check-ui ui #\C 7))
+
+(defun lui-p (ui)
+  "Check if a string is a LUI"
+  (check-ui ui #\L 7))
+
+(defun sui-p (ui)
+  "Check if a string is a SUI"
+  (check-ui ui #\S 7))
+
+(defun tui-p (ui)
+  (check-ui ui #\T 3))
+
+(defun eui-p (ui)
+  (check-ui ui #\E 7))
+
+(defun check-ui (ui start-char len)
+  (when (and (stringp ui)
+            (= (length ui) (1+ len))
+            (char-equal start-char (schar ui 0))
+            (ignore-errors (parse-integer ui :start 1)))
+    t))
+
+
 ;;; Generic display functions
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
   (multiple-value-bind (is-english is-term) (english-term-p obj)
       (or (not is-term) is-english)))
 
-(defun print-umlsclass (obj &key (stream *standard-output*) (category :compact-text)
-                       (file-wrapper t) (english-only nil) (subobjects nil)
-                       (refvars nil))
+(defun print-umlsclass (obj &key (stream *standard-output*)
+                       (category :compact-text)
+                       (file-wrapper nil) (english-only t) (subobjects nil)
+                       (refvars nil) (link-printer nil))
   (view obj :stream stream :category category :subobjects subobjects
        :file-wrapper file-wrapper
        :filter (if english-only nil #'english-term-filter)
+       :link-printer link-printer
        :refvars refvars))
 
 (defmacro define-lookup-display (newfuncname lookup-func)
   "Return the string for a ulo object"
   (find-string-sui (sui lo)))
 
-(defmethod uterm-pfstr (uterm)
+(defun uterm-pfstr (uterm)
   "Return the preferred string for a uterm"
   (dolist (ustr (s#str uterm))
     (when (string= "PF" (stt ustr))
       (return-from uterm-pfstr (str ustr)))))
 
-(defmethod remove-non-english-terms (uterms)
+(defun remove-non-english-terms (uterms)
   (remove-if-not #'english-term-p uterms))