X-Git-Url: http://git.kpe.io/?p=umlisp.git;a=blobdiff_plain;f=parse-common.lisp;h=f712e7627dd632b3ad651cc69d29f1303043764e;hp=a0c7c2afce6afea1c94dbc0c132041be7d42238d;hb=1156ea284d3010afd2e113fc4ddb325290b8a7a4;hpb=ddc4af5d96963df7c4df2706d752a1e1851ac86e diff --git a/parse-common.lisp b/parse-common.lisp index a0c7c2a..f712e76 100644 --- a/parse-common.lisp +++ b/parse-common.lisp @@ -230,25 +230,24 @@ Currently, these are the LEX and NET files." "Returns umls-file structure for a filename" (find-if #'(lambda (f) (string= filename (fil f))) *umls-files*)) -(defvar *position-hash* (make-hash-table :test 'equal)) +(defvar *position-hash* (make-hash-table :test 'eq)) -(defun position-field-file (filename fieldname) +(defun position-field-file (filename fieldname key) "Returns the position of a field in a file" - (let ((key (cons filename fieldname))) - (multiple-value-bind (pos found) (gethash key *position-hash*) - (if found - (return-from position-field-file pos))) - - (let ((ufile (find-ufile filename))) - (unless ufile - (warn "Unable to find ufile for filename ~A." filename) + (multiple-value-bind (pos found) (gethash key *position-hash*) + (if found + (return-from position-field-file pos))) + + (let ((ufile (find-ufile filename))) + (unless ufile + (warn "Unable to find ufile for filename ~A." filename) + (return-from position-field-file nil)) + (let ((pos (position fieldname (fields ufile) :test #'string=))) + (unless pos + (warn "Unable to find field ~A in ufile ~S." fieldname ufile) (return-from position-field-file nil)) - (let ((pos (position fieldname (fields ufile) :test #'string=))) - (unless pos - (warn "Unable to find field ~A in ufile ~S." fieldname ufile) - (return-from position-field-file nil)) - (setf (gethash key *position-hash*) pos) - pos)))) + (setf (gethash key *position-hash*) pos) + pos))) (defun find-ucols-for-ufile (ufile) "Returns list of umls-cols for a file structure"