<<[Indigo]2.3>SignalTypeRegistrationImpl.Mesa>> <> DIRECTORY OrderedSymbolTableRef, Rope, RoseTranslateTypes, SignalTypeRegistration; SignalTypeRegistrationImpl: CEDAR PROGRAM IMPORTS OrderedSymbolTableRef, Rope EXPORTS SignalTypeRegistration = BEGIN OPEN RoseTranslateTypes; defaultNodeType: PUBLIC ROPE _ NIL; signalTypes: PUBLIC SymbolTable _ OrderedSymbolTableRef.CreateTable[CompareSymbolTableEntries]; CompareSymbolTableEntries: PUBLIC OrderedSymbolTableRef.CompareProc = BEGIN s1, s2: ROPE; s1 _ WITH r1 SELECT FROM r: ROPE => r, st: SymbolTableEntry => st.name, ENDCASE => ERROR; s2 _ WITH r2 SELECT FROM r: ROPE => r, st: SymbolTableEntry => st.name, ENDCASE => ERROR; RETURN [s1.Compare[s2, FALSE]]; END; RegisterNodeTypeConstructor: PUBLIC PROC [name: ROPE, stc: NodeTypeConstructor] = BEGIN signalTypes.Insert[NEW [SymbolTableEntryRep[nodeTypeConstructor] _ [name: name, value: nodeTypeConstructor[stc: stc]]]]; END; SetDefaultNodeType: PUBLIC PROC [rope: ROPE] = {defaultNodeType _ rope}; END.