add BAKTRACE to HCFILES fails. Skip HC of CLTL2 (package errors) and dinfo (not really tedit). (#2598)
* add BAKTRACE to HCFILES fails. Skip HC of CLTL2 (package errors) and dinfo (not really tedit). * IMNAME.TEDIT isn't really TEDIT it's text. rename it. * internal/mesatypes.tedit now sources/MESATYPES.TXT move from internal to sources (loaded by sources), also move MESATYPE*
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10)
|
||||
|
||||
(FILECREATED "16-Apr-2026 22:42:51" {DSK}<home>matt>Interlisp>medley>internal>MEDLEY-UTILS.;2 30564
|
||||
(FILECREATED " 8-May-2026 10:41:23" {DSK}<Users>larry>il>MEDLEY>INTERNAL>MEDLEY-UTILS.;2 30963
|
||||
|
||||
:EDIT-BY "mth"
|
||||
:EDIT-BY "lmm"
|
||||
|
||||
:CHANGES-TO (FNS HCFILES MAKE-EXPORTS-ALL MAKE-INDEX-HTMLS)
|
||||
(FUNCTIONS REPORT-AND-GO)
|
||||
(VARS MEDLEY-UTILSCOMS HC-SKIP-EXTENSIONS)
|
||||
(ADVICE TEDIT.PROMPTPRINT)
|
||||
:CHANGES-TO (ADVICE TEDIT.PROMPTPRINT)
|
||||
(FNS GATHER-INFO MAKE-FULLER-DB MEDLEY-FIX-LINKS MEDLEY-FIX-DATES MAKE-EXPORTS-ALL
|
||||
MAKE-WHEREIS-HASH MAKE-WHEREIS-LOOPS HCFILES MAKE-INDEX-HTMLS RECOMPILE-ONE
|
||||
RECMPL COMPILE-SETUP REMAKEFILES)
|
||||
|
||||
:PREVIOUS-DATE "16-Apr-2026 22:27:40" {DSK}<home>matt>Interlisp>medley>internal>MEDLEY-UTILS.;1
|
||||
)
|
||||
:PREVIOUS-DATE " 4-May-2026 19:19:00" {DSK}<Users>larry>il>MEDLEY>INTERNAL>MEDLEY-UTILS.;1)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT MEDLEY-UTILSCOMS)
|
||||
@@ -215,7 +214,9 @@
|
||||
(DEFINEQ
|
||||
|
||||
(HCFILES
|
||||
[LAMBDA (BASE REDO SUBSETS) (* ; "Edited 16-Apr-2026 22:42 by mth")
|
||||
[LAMBDA (BASE REDO SUBSETS) (* ; "Edited 8-May-2026 10:39 by lmm")
|
||||
(* ; "Edited 4-May-2026 19:18 by lmm")
|
||||
(* ; "Edited 16-Apr-2026 22:42 by mth")
|
||||
(* ; "Edited 30-Jun-2024 08:27 by lmm")
|
||||
(* ; "Edited 23-Apr-2024 23:15 by lmm")
|
||||
(* ; "Edited 22-Apr-2024 13:22 by lmm")
|
||||
@@ -293,12 +294,14 @@
|
||||
(if (EQ REDO 'TEST)
|
||||
then (CL:FORMAT T "Testing open ~a..." SRCPATH)
|
||||
(CLOSEF? (OPENTEXTSTREAM SRCPATH))
|
||||
else (REPORT-AND-GO (CL:WITH-OPEN-STREAM (S (OPENTEXTSTREAM
|
||||
SRCPATH))
|
||||
(TEDIT.FORMAT.HARDCOPY S DEST T NIL NIL
|
||||
NIL 'PDF))
|
||||
else
|
||||
(* ;; "ADDED HERE")
|
||||
|
||||
(SETQ NLSETQGAG NIL)
|
||||
(SETQ \TEDIT.THELPFLG T)
|
||||
(REPORT-AND-GO (TEDIT.TO.IMAGEFILE SRCPATH DEST 'PDF)
|
||||
(CL:FORMAT NIL
|
||||
"~~%%~S TEDIT.FORMAT.HARDCOPY of ~A -- Condition: ~~A"
|
||||
"~~%%~S TEDIT.TO.IMAGEFILE of ~A -- Condition: ~~A"
|
||||
'FAIL SRCPATH)))
|
||||
(PRIN3 " DONE" T)
|
||||
(TERPRI T)
|
||||
@@ -519,12 +522,14 @@
|
||||
(TERPRI])
|
||||
)
|
||||
|
||||
(DEFMACRO REPORT-AND-GO (FORM REPORT-FORMAT) (* ; "Edited 16-Apr-2026 16:02 by mth")
|
||||
(DEFMACRO REPORT-AND-GO (FORM REPORT-FORMAT) (* ; "Edited 4-May-2026 19:02 by lmm")
|
||||
(* ; "Edited 16-Apr-2026 16:02 by mth")
|
||||
`[CL:MULTIPLE-VALUE-BIND (FORM-RESULT ERROR-CONDITION)
|
||||
(IGNORE-ERRORS (CL:VALUES ,FORM)) (* ; "Only the first value")
|
||||
(COND
|
||||
(ERROR-CONDITION (PRIN3 (CL:FORMAT NIL ,REPORT-FORMAT ERROR-CONDITION)
|
||||
T)
|
||||
(ERROR-CONDITION (BAKTRACE 'BAKTRACE NIL NIL 1 T)
|
||||
(PRIN3 (CL:FORMAT NIL ,REPORT-FORMAT ERROR-CONDITION)
|
||||
T)
|
||||
NIL)
|
||||
(T (LIST FORM-RESULT])
|
||||
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
|
||||
@@ -536,10 +541,10 @@
|
||||
(ADDTOVAR LAMA )
|
||||
)
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (1289 8223 (GATHER-INFO 1299 . 6681) (MAKE-FULLER-DB 6683 . 7592) (MEDLEY-FIX-LINKS 7594
|
||||
. 7987) (MEDLEY-FIX-DATES 7989 . 8221)) (9795 12371 (MAKE-EXPORTS-ALL 9805 . 10652) (
|
||||
MAKE-WHEREIS-HASH 10654 . 11843) (MAKE-WHEREIS-LOOPS 11845 . 12369)) (12372 24990 (HCFILES 12382 .
|
||||
19514) (MAKE-INDEX-HTMLS 19516 . 24988)) (25324 29936 (RECOMPILE-ONE 25334 . 27231) (RECMPL 27233 .
|
||||
27836) (COMPILE-SETUP 27838 . 28462) (REMAKEFILES 28464 . 29934)) (29938 30408 (REPORT-AND-GO 29938 .
|
||||
30408)))))
|
||||
(FILEMAP (NIL (1365 8299 (GATHER-INFO 1375 . 6757) (MAKE-FULLER-DB 6759 . 7668) (MEDLEY-FIX-LINKS 7670
|
||||
. 8063) (MEDLEY-FIX-DATES 8065 . 8297)) (9871 12447 (MAKE-EXPORTS-ALL 9881 . 10728) (
|
||||
MAKE-WHEREIS-HASH 10730 . 11919) (MAKE-WHEREIS-LOOPS 11921 . 12445)) (12448 25236 (HCFILES 12458 .
|
||||
19760) (MAKE-INDEX-HTMLS 19762 . 25234)) (25570 30182 (RECOMPILE-ONE 25580 . 27477) (RECMPL 27479 .
|
||||
28082) (COMPILE-SETUP 28084 . 28708) (REMAKEFILES 28710 . 30180)) (30184 30807 (REPORT-AND-GO 30184 .
|
||||
30807)))))
|
||||
STOP
|
||||
|
||||
Binary file not shown.
@@ -1,329 +0,0 @@
|
||||
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
|
||||
(FILECREATED "15-Jun-90 18:38:14" {DSK}<usr>local>lde>lispcore>internal>library>MESATYPES.;2 16783
|
||||
|
||||
changes to%: (VARS MESATYPESCOMS)
|
||||
|
||||
previous date%: " 5-Oct-84 12:16:00" {DSK}<usr>local>lde>lispcore>internal>library>MESATYPES.;1
|
||||
)
|
||||
|
||||
|
||||
(* ; "
|
||||
Copyright (c) 1984, 1990 by Venue & Xerox Corporation. All rights reserved.
|
||||
")
|
||||
|
||||
(PRETTYCOMPRINT MESATYPESCOMS)
|
||||
|
||||
(RPAQQ MESATYPESCOMS
|
||||
((* Defines three new record types%: MESATYPE, MESARECORD, and MESAARAY. Also provides a
|
||||
number of macros to manipulate objects of these record types. None of this package need be
|
||||
present in the compiled version of a client package.)
|
||||
(* Public stuff)
|
||||
(MACROS MESASIZE MESASETQ MESAEQUAL FMESAELT MESAELT MESASETA)
|
||||
(PROP ARGNAMES MESASIZE MESASETQ MESAEQUAL FMESAELT MESAELT MESASETA)
|
||||
(* Private stuff)
|
||||
(INITVARS (\MESATYPES (HASHARRAY 20)))
|
||||
(P (pushnew CLISPRECORDTYPES 'MESATYPE)
|
||||
(pushnew CLISPRECORDTYPES 'MESARECORD)
|
||||
(pushnew CLISPRECORDTYPES 'MESAARRAY)
|
||||
(MOVD 'RECORD 'MESATYPE)
|
||||
(MOVD 'RECORD 'MESARECORD)
|
||||
(MOVD 'RECORD 'MESAARRAY))
|
||||
(PROP USERRECORDTYPE MESATYPE MESARECORD MESAARRAY)
|
||||
(FNS MESATYPEFN MESARECORDFN MesaRecordFields MesaRecordSubblock MesaRecordCreateMethod
|
||||
MESAARRAYFN MesaArrayOffsets MesaArrayFindOffset RemoveLast)))
|
||||
|
||||
|
||||
|
||||
(* Defines three new record types%: MESATYPE, MESARECORD, and MESAARAY. Also provides a number of
|
||||
macros to manipulate objects of these record types. None of this package need be present in the
|
||||
compiled version of a client package.)
|
||||
|
||||
|
||||
|
||||
|
||||
(* Public stuff)
|
||||
|
||||
(DECLARE%: EVAL@COMPILE
|
||||
|
||||
(PUTPROPS MESASIZE MACRO [args (PROG ((recordName (CAR args)))
|
||||
(* Returns the size of record
|
||||
recordName)
|
||||
(RETURN (EVAL `(INDEXF (fetch (%, recordName
|
||||
THISISTHELASTFIELD
|
||||
) of T])
|
||||
|
||||
(PUTPROPS MESASETQ MACRO [args (PROG ((a (CAR args))
|
||||
(b (CADR args))
|
||||
(type (CADDR args)))
|
||||
|
||||
(* Copies the contents of "b" into "a" Returns a.
|
||||
Should be used to translate statement of the form "a _ b;" when a and b are
|
||||
neither numbers nor pointers. A safer (ie, more correct) way to do this would
|
||||
be to say "(foreach field f in type st f has both a fetch and a replace method do (replace (type f) of a with (fetch (type f) of b)))")
|
||||
|
||||
(RETURN `(\BLT %, a %, b (MESASIZE %, type])
|
||||
|
||||
(PUTPROPS MESAEQUAL MACRO [args (PROG ((a (CAR args))
|
||||
(b (CADR args))
|
||||
(type (CADDR args)))
|
||||
|
||||
(* Compares a and b for equality, where a and b are instances of record type.
|
||||
a and b can be multiple words long.)
|
||||
|
||||
(RETURN `(for word from 0
|
||||
to (SUB1 (MESASIZE %, type))
|
||||
always (EQ (\GETBASE %, a word)
|
||||
(\GETBASE %, b word])
|
||||
|
||||
(PUTPROPS FMESAELT MACRO
|
||||
[args
|
||||
(PROG ((array (CAR args))
|
||||
(arrayType (CADR args))
|
||||
(indexes (CDDR args))
|
||||
indexRangeList indexOffsetList)
|
||||
|
||||
(* Returns a pointer to the indicated element of array.
|
||||
Unsafe, because it returns a pointer to the middle of the structure, which
|
||||
would confuse the garbage collector if you held onto the element pointer longer
|
||||
than the array pointer.)
|
||||
|
||||
[SETQ indexRangeList (EVAL `(fetch (%, arrayType INDEXLIST) of T]
|
||||
[SETQ indexOffsetList (EVAL `(fetch (%, arrayType OFFSETLIST) of T]
|
||||
(RETURN (LIST '\ADDBASE array
|
||||
(CONS 'IPLUS
|
||||
(for index in indexes as indexRange in
|
||||
indexRangeList
|
||||
as offset in indexOffsetList
|
||||
collect `([OPENLAMBDA (index)
|
||||
(OR (AND (ILEQ %, (CAR indexRange)
|
||||
index)
|
||||
(ILEQ index %, (CDR indexRange)
|
||||
))
|
||||
(ERROR 'indexOutOfRange))
|
||||
(ITIMES %, offset (IDIFFERENCE
|
||||
index %, (CAR
|
||||
indexRange
|
||||
]
|
||||
%, index])
|
||||
|
||||
(PUTPROPS MESAELT MACRO [args (PROG ((arrayType (CADR args))
|
||||
elementType)
|
||||
|
||||
(* Returns the selected element of the array.
|
||||
Copies it into a freshly allocated box to avoid returning a pointer to the
|
||||
middle of the structure, which might confuse the garbage collector.)
|
||||
|
||||
[SETQ elementType (EVAL `(fetch (%, arrayType
|
||||
ELEMENTTYPE)
|
||||
of T]
|
||||
(RETURN `(MESASETQ (create %, elementType)
|
||||
%,
|
||||
(CONS 'FMESAELT args)
|
||||
%, elementType])
|
||||
|
||||
(PUTPROPS MESASETA MACRO [args (PROG ((eltArgs (RemoveLast args))
|
||||
(arrayType (CADR args))
|
||||
(newValue (CAR (LAST args)))
|
||||
elementType)
|
||||
|
||||
(* Replaces the index'th element of array, provided that array is a contiguous
|
||||
run of objects of type elementType)
|
||||
|
||||
[SETQ elementType (EVAL `(fetch (%, arrayType
|
||||
ELEMENTTYPE)
|
||||
of T]
|
||||
(RETURN `(MESASETQ %, (CONS 'FMESAELT eltArgs)
|
||||
%, newValue %, elementType])
|
||||
)
|
||||
|
||||
(PUTPROPS MESASIZE ARGNAMES (recordName))
|
||||
|
||||
(PUTPROPS MESASETQ ARGNAMES (a b type))
|
||||
|
||||
(PUTPROPS MESAEQUAL ARGNAMES (a b type))
|
||||
|
||||
(PUTPROPS FMESAELT ARGNAMES (array arrayType index1 |...| indexn))
|
||||
|
||||
(PUTPROPS MESAELT ARGNAMES (array arrayType index1 |...| indexn))
|
||||
|
||||
(PUTPROPS MESASETA ARGNAMES (array arrayType index1 |...| indexn newValue))
|
||||
|
||||
|
||||
|
||||
(* Private stuff)
|
||||
|
||||
|
||||
(RPAQ? \MESATYPES (HASHARRAY 20))
|
||||
|
||||
(pushnew CLISPRECORDTYPES 'MESATYPE)
|
||||
|
||||
(pushnew CLISPRECORDTYPES 'MESARECORD)
|
||||
|
||||
(pushnew CLISPRECORDTYPES 'MESAARRAY)
|
||||
|
||||
(MOVD 'RECORD 'MESATYPE)
|
||||
|
||||
(MOVD 'RECORD 'MESARECORD)
|
||||
|
||||
(MOVD 'RECORD 'MESAARRAY)
|
||||
|
||||
(PUTPROPS MESATYPE USERRECORDTYPE MESATYPEFN)
|
||||
|
||||
(PUTPROPS MESARECORD USERRECORDTYPE MESARECORDFN)
|
||||
|
||||
(PUTPROPS MESAARRAY USERRECORDTYPE MESAARRAYFN)
|
||||
(DEFINEQ
|
||||
|
||||
(MESATYPEFN
|
||||
[LAMBDA (typeDecl) (* hts%: "24-Mar-84 19:46")
|
||||
(PROG ((typeName (CADR typeDecl))
|
||||
(isType (CADDR typeDecl))
|
||||
(rest (CDDDR typeDecl)))
|
||||
(RETURN (NCONC (LIST 'MESARECORD typeName (LIST (CONS 'DATA isType)))
|
||||
rest])
|
||||
|
||||
(MESARECORDFN
|
||||
[LAMBDA (recordDecl) (* edited%: "31-Mar-84 16:34")
|
||||
(* Translates a MESARECORD
|
||||
declaration into a BLOCKRECORD.)
|
||||
|
||||
(* For each multi-word (gt 2) field, creates a special fetch method that
|
||||
returns a pointer to the beginning of the field, and a replace method that uses
|
||||
\BLT to copy over the entire field. This is done by replacing the fieldname
|
||||
with fieldnameSTARTOFTHISFIELD and making the fetch method for fieldname be a
|
||||
LOCF on fieldnameSTARTOFTHISFIELD)
|
||||
|
||||
(* Note that a field can be declared to be a multi-word field by saying either
|
||||
(fieldname N WORD) or (fieldname mumble)%, where mumble is a previously defined
|
||||
MESARECORD.)
|
||||
|
||||
(* Also includes a CREATE method for the type.
|
||||
if the user has not already done so. (Uses \ALLOCBLOCK.
|
||||
The messy-looking arithmetic is because MESASIZE returns the size of a record
|
||||
in words, and \ALLOCBLOCK's arg specifies the %# of pointer cells
|
||||
(2 words each) to allocate))
|
||||
|
||||
(PROG ((recordName (CADR recordDecl))
|
||||
(fieldDeclarations (CADDR recordDecl))
|
||||
(subblocks (CONS))
|
||||
(rest (CDDDR recordDecl)))
|
||||
(RETURN (PROG1 (NCONC [LIST 'BLOCKRECORD recordName (NCONC (MesaRecordFields
|
||||
fieldDeclarations)
|
||||
(LIST '(THISISTHELASTFIELD
|
||||
WORD]
|
||||
(CAR subblocks)
|
||||
(MesaRecordCreateMethod recordName rest)
|
||||
rest)
|
||||
(PUTHASH recordName T \MESATYPES) (* Record that recordName is a new
|
||||
MESARECORD)
|
||||
)])
|
||||
|
||||
(MesaRecordFields
|
||||
[LAMBDA (fieldDeclarations) (* hts%: "29-Mar-84 18:04")
|
||||
(for field in fieldDeclarations
|
||||
collect (if [AND (CAR field)
|
||||
(OR (GETHASH (CADR field)
|
||||
\MESATYPES)
|
||||
(AND (EQ (CADDR field)
|
||||
'WORD)
|
||||
(FIXP (CADR field))
|
||||
(IGREATERP (CADR field)
|
||||
2]
|
||||
then (TCONC subblocks (MesaRecordSubblock recordName field))
|
||||
(LIST (PACK* (CAR field)
|
||||
'STARTOFTHISFIELD)
|
||||
[OR (FIXP (CADR field))
|
||||
(EVAL `(MESASIZE %, (CADR field]
|
||||
'WORD)
|
||||
else field])
|
||||
|
||||
(MesaRecordSubblock
|
||||
[LAMBDA (recordName fieldDeclaration) (* hts%: "29-Mar-84 18:05")
|
||||
(* Returns the appropriate accessfn
|
||||
declaration to make fieldDeclaration
|
||||
a multi-word subblock.)
|
||||
(PROG ((fieldName (CAR fieldDeclaration))
|
||||
(fieldSize (CADR fieldDeclaration)))
|
||||
[OR (FIXP fieldSize)
|
||||
(SETQ fieldSize (EVAL `(MESASIZE %, fieldSize]
|
||||
(RETURN (LIST 'ACCESSFNS (LIST fieldName (LIST 'LOCF (LIST 'fetch
|
||||
(LIST recordName
|
||||
(PACK* fieldName
|
||||
'STARTOFTHISFIELD))
|
||||
'of
|
||||
'DATUM))
|
||||
(LIST 'PROGN (LIST '\BLT (LIST 'fetch (LIST recordName
|
||||
fieldName)
|
||||
'of
|
||||
'DATUM)
|
||||
'NEWVALUE fieldSize)
|
||||
'NEWVALUE])
|
||||
|
||||
(MesaRecordCreateMethod
|
||||
[LAMBDA (recordName rest) (* edited%: "31-Mar-84 16:31")
|
||||
|
||||
(* Returns a create method for the type, if the user has not already done so.)
|
||||
|
||||
(if (for thing in rest thereis (EQ 'CREATE (CAR thing)))
|
||||
then NIL
|
||||
else (LIST `(CREATE (\ALLOCBLOCK (LRSH (ADD1 (MESASIZE %, recordName))
|
||||
1])
|
||||
|
||||
(MESAARRAYFN
|
||||
[LAMBDA (arrayDecl) (* hts%: "18-Apr-84 14:21")
|
||||
(PROG ((arrayName (CADR arrayDecl))
|
||||
(indexDeclarations (CADDR arrayDecl))
|
||||
(elementType (CADDDR arrayDecl))
|
||||
(rest (CDDDDR arrayDecl))
|
||||
arrayOffsets)
|
||||
[SETQ indexDeclarations (for indexDecl in indexDeclarations
|
||||
collect (CONS (EVAL (CAR indexDecl))
|
||||
(EVAL (CADR indexDecl]
|
||||
(* Evaluate arraybounds so that they
|
||||
can be expressions rather than
|
||||
integers.)
|
||||
(SETQ arrayOffsets (MesaArrayOffsets indexDeclarations elementType))
|
||||
(RETURN (APPEND `[MESARECORD %, arrayName ((DATA %, (MesaArrayFindOffset
|
||||
indexDeclarations arrayOffsets
|
||||
elementType)
|
||||
WORD))
|
||||
(ACCESSFNS ((INDEXLIST (QUOTE %, indexDeclarations))
|
||||
(OFFSETLIST (QUOTE %, arrayOffsets))
|
||||
(ELEMENTTYPE (QUOTE %, elementType]
|
||||
rest])
|
||||
|
||||
(MesaArrayOffsets
|
||||
[LAMBDA (indexDeclarations elementType) (* hts%: "24-Mar-84 20:15")
|
||||
(if (NULL indexDeclarations)
|
||||
then NIL
|
||||
else (PROG ((restOfOffsets (MesaArrayOffsets (CDR indexDeclarations)
|
||||
elementType)))
|
||||
(RETURN (CONS (MesaArrayFindOffset (CDR indexDeclarations)
|
||||
restOfOffsets elementType)
|
||||
restOfOffsets])
|
||||
|
||||
(MesaArrayFindOffset
|
||||
[LAMBDA (indexDeclarations arrayOffsets elementType) (* hts%: "18-Apr-84 14:29")
|
||||
(if indexDeclarations
|
||||
then (ITIMES (ADD1 (IDIFFERENCE (CDAR indexDeclarations)
|
||||
(CAAR indexDeclarations)))
|
||||
(CAR arrayOffsets))
|
||||
else (EVAL `(MESASIZE %, elementType])
|
||||
|
||||
(RemoveLast
|
||||
[LAMBDA (list) (* hts%: "26-Mar-84 00:04")
|
||||
(PROG ((newList (COPY list))
|
||||
length)
|
||||
(SETQ length (LENGTH newList))
|
||||
(if (ILEQ length 1)
|
||||
then (RETURN NIL)
|
||||
else (RPLACD (FNTH newList (SUB1 length)))
|
||||
(RETURN newList])
|
||||
)
|
||||
(PUTPROPS MESATYPES COPYRIGHT ("Venue & Xerox Corporation" 1984 1990))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (8350 16689 (MESATYPEFN 8360 . 8691) (MESARECORDFN 8693 . 10835) (MesaRecordFields 10837
|
||||
. 11858) (MesaRecordSubblock 11860 . 13448) (MesaRecordCreateMethod 13450 . 13907) (MESAARRAYFN 13909
|
||||
. 15423) (MesaArrayOffsets 15425 . 15943) (MesaArrayFindOffset 15945 . 16319) (RemoveLast 16321 .
|
||||
16687)))))
|
||||
STOP
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
Subject: New Lispcore>Library package: MesaTypes
To: Lispcore^, Lispsupport, Sheil, Cooper, Purcell
Announcing a new Lispcore>Library package: MesaTypes
By Tayloe Stansbury with help from Richard Burton.
This package introduces three new clisprecordtypes which allow you to describe any block of bits with an arbitrarily nested datatype. You can define multidimensional, nonstandardly indexed arrays with multi-word elements; records with multi-word fields; and multi-word types. Special accessfns cover up the necessary \BLTs and LOCFs. Appropriate create methods are automatically provided. The package also provides a number of macros for manipulating instances of such types.
Anyone who wants to use graceful datatypes to describe some arbitrary chunk of memory (e.g. ethernet, rs232, nsfiling, any file system) will probably find this package useful; most of the 1108 file system now depends on it. People translating Mesa system code into Lisp will find it particularly useful.
This message is stored as Lispcore>Library>MesaTypes.tedit. Proper external documentation of this package will follow release of the 1108 file system. Extensive examples of its use can be found in the first few pages of stansbury>newdlionfs>dlionfs.
-- Tayloe.
|
||||
Reference in New Issue
Block a user