TypeStrings.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Maxwell on 11-Aug-81 10:59:55
Rovner on 13-Aug-81 8:50:54
Satterthwaite, May 6, 1983 1:08 pm
Russ Atkinson (RRA) January 31, 1985 1:13:19 pm PST
DIRECTORY
Symbols USING [SEIndex],
SymbolTable USING [Base];
TypeStrings: DEFINITIONS = {
Code: TYPE = MACHINE DEPENDENT {
definition(200b), name,
record, structure, union, array, sequence, enumerated, subrange, opaque,
countedZone, uncountedZone,
list, relativeRef, ref, refAny, pointer, longPointer, descriptor, longDescriptor, --address--
port, process, program,
type,
nil,
any,
boolean,
unspecified,
globalFrame, localFrame,
procedure, signal, error, --transfer--
cardinal, integer, character, longInteger, longCardinal, --basic --
string, stringBody, text, atomRec,
mds, ordered, packed, readOnly, -- options
real,
paint,
leftParen, rightParen,
additons by EHS
safeProc,
safe,
var,
longUnspecified
}; -- not yet: code, base
Code starts at 200b so that a typestring can be parsed rapidly
a character in [000c..'Z] is a string name or length
a character in [200b..377b] is a code
the only exception is paint(8 chars), which is always proceeded by an opaque or paint code
TypeString: TYPE = LONG STRING;
Create: PROC[base:SymbolTable.Base, sei:Symbols.SEIndex, z:UNCOUNTED ZONE]
RETURNS[TypeString];
will complain if all of the necessary information isn't in base
ASSERTION: TypePack.Equivalent[[base1,sei1],[base2,sei2]]
IFF (Create[base1,sei1]=Create[base2,sei2])
}.