file: EDITREC
purpose: See/Edit random non-list structures.
to use: (EDITX OBJECT TYPE) ; to edit
(SHOWX OBJECT TYPE) ; to just generate a listified representation
EDITX and SHOWX let you examine and modify any structure known to the
record package, file package, or defined as a data type. Each field
associated with the object is unpacked and cons'd into a list with its
field name.
In SHOWX, the resulting list structure is returned and (presumably)
printed by lispx. This is especially pleasant when SYSPRETTYFLG
is set to T, and especially pleasant when PRINTOPT has been loaded
and SYSPRETTYFLG is set to PRINTCAUTIOUSLY.
In EDITX, the result of this unpacking operation is edited and any changes
made to the values are undoably incorporated into the original
object if you exit normally.
OBJECT may be any object, thought some objects may not be meaningfully
expanded in the process.
TYPE is optional. If type is unspecified, the DATATYPE of the object is
used as a starting point, and "reasonable" record alternatives are
suggested. If all else fails, a BLOCKRECORD or ACCESSFNS with the
same name as the TYPENAME of the object is used. If otherwise
reasonable, EDITX will use the same arguments as last time you
used it on either the same object or an object of the same type.
If there seeem to be multiple reasonable alternatives, or if TYPE is
specified as the atom "?", ASKUSER will be called to allow you to
select among the alternatives.
The algorithm for selecting appropriate records includes looking for
similarly cons'd list records, or for appropriate size and type
ARRAYBLOCK records.
The default display for arrays and hash arrays includes an exploded
list structure for their contents.
EXAMPLES:
NIL
85←(CREATE FOO A ← 1 B ← 2 C ← 3 D ← 4)
(1 (2 3)
4)
86←)
NIL
86←(SHOWX IT)
((1 (2 3)
4)
FOO ((D 4)
(C 3)
(B 2)
(A 1)))
87←(CREATE BAR A ← 1 B ← 2 C ← 3 D ← 4)
(1 2 3 (4 NIL))
89←(SHOWX IT)
((1 2 3 (4 NIL))
BAR ((E NIL)
(D 4)
(C 3)
(B 2)
(A 1)))
90←(CREATE MUMBLE A ← 1 B ← 2 C ← 3 D ← 4)
{ARRAYP}#003f6710
91←(SHOWX IT)
({ARRAYP}#003f6710 MUMBLE ((A 1)
(B 2)
(C 3)
(D 4)))
92←(SHOWX 'A)
which type in (VARS FIELDS ATOM) should I use ? FIELDS
(PROGN (ARRAYBLOCK MUMBLE (A B C D))
(RECORD BAR (A B C (D E)))
(RECORD FOO (A (B C)
D)))
94←(SHOWX 'B)
which type in (FIELDS ATOM) should I use ? ATOM
(B ATOM
((TOPVAL NOBIND)
(PLIST NIL)
(FUNDEF NIL)
(PNAME "B")
(applicator {VMSPACE}#0000b89b)
(nextatom LOC)))