Sequences.mesa
Copyright Ó 1991 by Xerox Corporation. All rights reserved.
Sturgis, February 22, 1989 3:43:40 pm PST
Last changed by Theimer on July 16, 1989 4:44:16 pm PDT
Spreitze, May 21, 1991 8:20 am PDT
DIRECTORY
CirioTypes USING[CompilerContext, Mem, Node, Type],
Rope USING[ROPE];
Sequences: CEDAR DEFINITIONS =
BEGIN
CC: TYPE = CirioTypes.CompilerContext;
Node: TYPE = CirioTypes.Node;
Mem: TYPE = CirioTypes.Mem;
Type: TYPE = CirioTypes.Type;
SequenceTypeProcs: TYPE = RECORD [
createIndirectNode: PROC [cc: CC, data: REF ANY, indirectType, targetType: Type, mem: Mem] RETURNS [Node],
getBitSize: PROC[indirectType: Type, cc: CC, data: REF ANY] RETURNS[CARD],
getEntryType: PROC[cc: CC, data: REF ANY] RETURNS[CirioTypes.Type],
getNominalArrayType: PROC[cc: CC, data: REF ANY] RETURNS[CirioTypes.Type]
];
CreateSequenceRecordType: PROC[preamble: Type, tailName: Rope.ROPE, tagName: Rope.ROPE, indexType: Type, procs: REF SequenceTypeProcs, cc: CC, data: REF ANY] RETURNS[Type];
CirioCode.GetTypeClass[type] = $sequence
CCTypes.GetTypeRepresentation will return NIL.
IndirectSRProcs: TYPE = RECORD[
selectPreamble: PROC[procsData: REF ANY, cc: CC] RETURNS[CirioTypes.Node],
selectTag: PROC[procsData: REF ANY, cc: CC] RETURNS[CirioTypes.Node],
selectTailEntry: PROC[index: CARD, procsData: REF ANY, cc: CC] RETURNS[CirioTypes.Node],
getPointer: PROC[data: REF ANY, cc: CC] RETURNS[CirioTypes.Node]];
CreateIndirectSequenceNode: PROC[targetSeqType: Type, procs: REF IndirectSRProcs, procsData: REF ANY, cc: CC] RETURNS[Node];
Note: selectEntry[0, cc, data] selects the first entry in the array.
END.