;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
-;;;; Name: classes-support.lisp
-;;;; Purpose: Support for UMLisp classes
-;;;; Author: Kevin M. Rosenberg
-;;;; Date Started: Apr 2000
+;;;; Name: classes-support.lisp
+;;;; Purpose: Support for UMLisp classes
+;;;; Author: Kevin M. Rosenberg
+;;;; Created: Apr 2000
;;;;
-;;;; $Id: class-support.lisp,v 1.19 2003/07/21 08:41:44 kevin Exp $
+;;;; $Id$
;;;;
;;;; This file, part of UMLisp, is
-;;;; Copyright (c) 2000-2003 by Kevin M. Rosenberg, M.D.
+;;;; Copyright (c) 2000-2004 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.
(in-package #:umlisp)
-
;;; Formatting routines
(defgeneric fmt-cui (c))
(defmethod fmt-tui ((tui string))
(if (eql (aref tui 0) #\T)
tui
- (fmt-tui (parse-integer tui))))
+ (fmt-tui (parse-integer tui))))
+
+(defgeneric fmt-aui (aui))
+(defmethod fmt-aui ((aui fixnum))
+ (prefixed-fixnum-string aui #\A 7))
+
+(defmethod fmt-aui ((aui string))
+ (if (eql (aref aui 0) #\A)
+ aui
+ (fmt-aui (parse-integer aui))))
(defgeneric fmt-eui (e))
(defmethod fmt-eui ((e fixnum))
(defmethod mesh-number ((ustr ustr))
(let ((codes
- (filter (lambda (sat)
- (when (and (string-equal "MSH" (sab sat))
- (string-equal "MN" (atn sat)))
- (atv sat)))
- (s#sat ustr))))
+ (map-and-remove-nils
+ (lambda (sat)
+ (when (and (string-equal "MSH" (sab sat))
+ (string-equal "MN" (atn sat)))
+ (atv sat)))
+ (s#sat ustr))))
(if (= 1 (length codes))
(car codes)
codes)))
(defvar +language-abbreviations+
- '(("BAQ" . "Basque")
- ("DAN" . "Danish")
- ("DUT" . "Dutch")
- ("ENG" . "English")
- ("FIN" . "Finnish")
- ("FRE" . "French")
- ("GER" . "German")
- ("HEB" . "Hebrew")
- ("HUN" . "Hungarian")
- ("ITA" . "Italian")
- ("NOR" . "Norwegian")
- ("POR" . "Portuguese")
- ("RUS" . "Russian")
- ("SPA" . "Spanish")
- ("SWE" . "Swedish")))
+ '(("BAQ" . "Basque")
+ ("CZE" . "Chech")
+ ("DAN" . "Danish")
+ ("DUT" . "Dutch")
+ ("ENG" . "English")
+ ("FIN" . "Finnish")
+ ("FRE" . "French")
+ ("GER" . "German")
+ ("HEB" . "Hebrew")
+ ("HUN" . "Hungarian")
+ ("ITA" . "Italian")
+ ("JPN" . "Japanese")
+ ("NOR" . "Norwegian")
+ ("POR" . "Portuguese")
+ ("RUS" . "Russian")
+ ("SPA" . "Spanish")
+ ("SWE" . "Swedish")))
(defvar *lat-info-table* (make-hash-table :size 30 :test 'equal))
(defvar *is-lat-table-init* nil)
(setq *is-lat-table-init* t))
(defun lat-abbr-info (lat)
- (nth-value 0 (gethash (string-downcase lat) *lat-info-table*)))
+ (aif (nth-value 0 (gethash (string-downcase lat) *lat-info-table*))
+ it
+ lat))
+
(defun stt-abbr-info (stt)
(let* ((anc-this-cxn (remove-if-not
(lambda (cxt) (= (1+ i) (cxn cxt))) anc)))
(push
- (sort anc-this-cxn (lambda (a b) (< (rnk a) (rnk b))))
+ (sort anc-this-cxn (lambda (a b) (< (rank a) (rank b))))
anc-lists)))))