-- TypeGraphDef.mesa: December 1, 1985 3:22:55 pm PST -- Sturgis, January 3, 1986 2:04:03 pm PST DIRECTORY KipperMain1Def USING[NameNode, TypeContextNode, TypeNode], Rope USING[ROPE]; TypeGraphDef: CEDAR DEFINITIONS = BEGIN OPEN KipperMain1Def; -- having to do with name nodes GetNameNodeInfo: PROC[NameNode] RETURNS[text: Rope.ROPE, position: INT]; BuildRopeName: PROC[text: Rope.ROPE] RETURNS[NameNode]; EqualNames: PROC[NameNode, NameNode] RETURNS[BOOLEAN]; -- having to do with contexts GetNamedType: PROC[TypeContextNode, NameNode] RETURNS[TypeNode]; GetDefFileOfNamedType: PROC[TypeContextNode, NameNode] RETURNS[NameNode]; -- (NIL if a predefined Cedar type) GenRootTypeNames: PROC[TypeContextNode, PROC[NameNode]]; GenDefFileNames: PROC[TypeContextNode, PROC[NameNode]]; GenImplFileNames: PROC[TypeContextNode, PROC[NameNode]]; GenNamedTypes: PROC[TypeContextNode, PROC[TypeNode]]; -- only generates a node once, even if it occured in form "A, B: TYPE = ..." -- having to do with annonymous type nodes TypeNodeCase: TYPE = {naming, enumerated, record, ref, any, list, seq, builtIn}; GetTypeNodeCase: PROC[TypeNode] RETURNS[TypeNodeCase]; GetTypeNodeName: PROC[node: TypeNode] RETURNS[NameNode]; GetTypeNodeTypeDefFile: PROC[node: TypeNode] RETURNS[NameNode]; GetTypeNodeFcnDefFile: PROC[node: TypeNode] RETURNS[NameNode]; GetTypeNodeFcnImplFile: PROC[node: TypeNode] RETURNS[NameNode]; GenAllNamesForType: PROC[node: TypeNode, for: PROC[NameNode]]; -- for specific case type nodes GetNamingNodeNamedNode: PROC[TypeNode] RETURNS[TypeNode]; GetNamingNodePrimaryName: PROC[TypeNode] RETURNS[NameNode]; GenNamingNodeRightNames: PROC[TypeNode, PROC[NameNode]]; GenNamingNodeLeftNames: PROC[TypeNode, PROC[NameNode]]; GetEnumeratedSize: PROC[TypeNode] RETURNS[INT]; -- n elements GenEnumeratedElements: PROC[TypeNode, PROC[NameNode]]; RecordCase: TYPE = {normal, seq}; GenRecordFields: PROC[TypeNode, PROC[NameNode, TypeNode, --last-- BOOLEAN]]; GetRecordCase: PROC[TypeNode] RETURNS[RecordCase]; GetSeqFieldType: PROC[TypeNode] RETURNS[TypeNode]; GetRefTypeTarget: PROC[TypeNode] RETURNS[TypeNode]; GetListTypeValue: PROC[TypeNode] RETURNS[TypeNode]; GetSeqTypeCountName: PROC[type: TypeNode] RETURNS[NameNode]; GetSeqTypeCountType: PROC[type: TypeNode] RETURNS[TypeNode]; GetSeqTypeFieldType: PROC[type: TypeNode] RETURNS[TypeNode]; BuiltInTypeCase: TYPE = {Cardinal, Int, Boolean, Rope, Any, Bool, Char, Character, Integer, Nat, Real, Word, Card}; GetBuiltInTypeName: PROC[TypeNode] RETURNS[NameNode]; GetBuiltInTypeCase: PROC[TypeNode] RETURNS[BuiltInTypeCase]; -- the hash table stuff HashTable: TYPE = REF HashTableBody; HashTableBody: TYPE; FindEntry: PROC[table: HashTable, name: NameNode] RETURNS[REF ANY]; FindExistingEntry: PROC[table: HashTable, name: NameNode] RETURNS[REF ANY]; MakeEntry: PROC[table: HashTable, name: NameNode, info: REF ANY]; CreateHashTable: PROC[size: CARDINAL] RETURNS[HashTable]; EnumerateHashTable: PROC[table: HashTable, for: PROC[REF ANY, NameNode]]; END.. ÊD˜J˜5J˜*˜ Jšœ:˜:J˜J˜—J˜!Jšœ˜J˜J˜J˜J˜J˜HJ˜J˜7J˜J˜6J˜J˜J˜J˜J˜A˜IJ˜#—J˜9J˜7J˜8J˜˜5J˜L—J˜J˜J˜*J˜J˜PJ˜J˜6J˜J˜8J˜J˜?J˜J˜>J˜J˜?J˜J˜>J˜J˜J˜J˜J˜J˜J˜9J˜;J˜8J˜7J˜J˜=J˜6J˜J˜!J˜LJ˜2J˜2J˜J˜3J˜J˜3J˜J˜