(FILECREATED " 4-Apr-85 11:22:05" {ERIS}<LISP>INTERMEZZO>PATCHES>DATATYPEPATCH2.;1 2003
changes to: (VARS DATATYPEPATCH2COMS))
(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT DATATYPEPATCH2COMS)
(RPAQQ DATATYPEPATCH2COMS ((FNS DECLAREDATATYPE /DECLAREDATATYPE)))
(DEFINEQ
(DECLAREDATATYPE
[LAMBDA (TYPENAME FIELDSPECS DLIST LENGTH) (* lmm "14-Mar-85 10:50")
(if (AND FIELDSPECS (OR (NOT DLIST)
(NOT LENGTH)))
then (SETQ DLIST (TRANSLATE.DATATYPE TYPENAME FIELDSPECS))
(SETQ LENGTH (pop DLIST)))
(OR (AND TYPENAME (LITATOM TYPENAME))
(LISPERROR "ILLEGAL ARG" TYPENAME))
(LET [(PTRS (for P in DLIST when (SELECTQ (fetch fdType of P)
((POINTER FULLPOINTER)
T)
NIL)
collect (fetch fdOffset of P]
(SETTOPVAL (\TYPEGLOBALVARIABLE TYPENAME)
(\ASSIGNDATATYPE1 TYPENAME DLIST LENGTH FIELDSPECS PTRS))
DLIST])
(/DECLAREDATATYPE
[LAMBDA (TYPENAME FIELDSPECS DLIST LEN) (* lmm "14-Mar-85 09:34")
(PROG (ONTYPX DLIST)
[AND LISPXHIST TYPENAME (UNDOSAVE (LIST (QUOTE /DECLAREDATATYPE)
TYPENAME
(GETFIELDSPECS TYPENAME]
(SETQ ONTYPX (\TYPENUMBERFROMNAME TYPENAME))
(SETQ DLIST (DECLAREDATATYPE TYPENAME FIELDSPECS DLIST LEN))
(if ONTYPX
then (* Non-null PREV implies non-null TYPENAME)
(OR (SELECTQ (SYSTEMTYPE)
(D (EQUAL ONTYPX (\TYPENUMBERFROMNAME TYPENAME)))
(EQUAL FIELDSPECS PREV))
(LISPXPRINT (LIST (QUOTE datatype)
TYPENAME
(QUOTE redeclared))
T T)))
(RETURN DLIST])
)
(PUTPROPS DATATYPEPATCH2 COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
(FILEMAP (NIL (322 1918 (DECLAREDATATYPE 332 . 1068) (/DECLAREDATATYPE 1070 . 1916)))))
STOP