;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: umlisp -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; ;;;; Name: data-structures.lisp ;;;; Purpose: Basic data objects for UMLisp ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; ;;;; $Id: data-structures.lisp,v 1.7 2003/05/06 06:09:29 kevin Exp $ ;;;; ;;;; This file, part of UMLisp, is ;;;; Copyright (c) 2000-2002 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) (eval-when (:compile-toplevel) (declaim (optimize (speed 3) (safety 1) (compilation-speed 0) (debug 3)))) ;;; Paths for files (defvar *umls-path* (make-pathname :directory '(:absolute "data" "umls" "2003AA")) "Path for base of UMLS data files") (defvar *meta-path* (merge-pathnames (make-pathname :directory '(:relative "META")) *umls-path*)) (defvar *lex-path* (merge-pathnames (make-pathname :directory '(:relative "LEX")) *umls-path*)) (defvar *net-path* (merge-pathnames (make-pathname :directory '(:relative "NET")) *umls-path*)) (defun umls-path! (p) (setq *umls-path* p)) ;;; Structures for parsing UMLS text files (defparameter *umls-files* nil "List of umls file structures. Used when parsing text files.") (defparameter *umls-cols* nil "List of meta column structures. Used when parsing text files.") ;; Preliminary objects to replace structures (defclass ufile () ((fil :initarg :fil) (table :initarg :table) (des :initarg :des) (fmt :initarg :fmt) (cls :initarg :cls) (rws :initarg :rws) (bts :initarg :bts) (fields :initarg :fields) (ucols :initarg ucols)) (:documentation "A UMLS File")) (defclass ucol () ((col :initarg :col) (des :initarg des) (ref :initarg ref) (min :initarg :min) (av :initarg :av) (max :initarg :max) (fil :initarg :fil) (sqltype :initarg :sqltype) (dty :initarg :dty :documentation "new in 2002: suggested SQL datatype") (parsefunc :initarg :parsefunc) (quotechar :initarg :quotechar) (datatype :initarg :datatype) (custom-value-func :initarg :custom-value-func)) (:documentation "A UMLS column")) (defstruct (umls-file) "Record for each UMLS File" fil table des fmt cls rws bts fields colstructs) (defstruct (umls-col) "Record for each UMLS Column in each file" col des ref min av max fil sqltype dty ;; new in 2002 umls: suggested SQL datatype parsefunc quotechar datatype custom-value-func)