<> <> <> <> DIRECTORY CD, CDSimpleRules, Rope; CDSimpleRulesBackdoor: CEDAR DEFINITIONS = BEGIN <<>> Rules: TYPE = REF; <<--UNION of ATOM and REF ImplementationRulesRep>> IRules: TYPE = REF RulesRep; RulesRep: TYPE = RECORD [ key: ATOM_NIL, technology: CD.Technology_NIL, minWidth: LayerRuleProc_NIL, minSpace: Layer2RuleProc_NIL, maxWidth: LayerRuleProc_NIL, getValue: ValueProc_NIL, getRuleDescription: GetRuleDescriptionProc_NIL, contact: ContactProc_NIL, largeContact: LargeContactProc_NIL, inherit: Rules_NIL, --at registration time properties: CD.PropRef_NIL, data: REF_NIL ]; LayerRuleProc: TYPE = PROC [rules: Rules, layer: CD.Layer] RETURNS [CD.Number]; Layer2RuleProc: TYPE = PROC [rules: Rules, l1, l2: CD.Layer] RETURNS [CD.Number]; ValueProc: TYPE = PROC [rules: Rules, id: ATOM] RETURNS [CD.Number]; GetRuleDescriptionProc: TYPE = PROC [rules: Rules, id: ATOM] RETURNS [Rope.ROPE]; ContactProc: TYPE = PROC [rules: Rules, l1, l2: CD.Layer] RETURNS [CD.Object]; LargeContactProc: TYPE = PROC [rules: Rules, design: CD.Design, size: CD.Position, l1, l2: CD.Layer] RETURNS [CD.Object]; GetRulesRep: PROC [rules: Rules] RETURNS [IRules]; <<-- Useful to convert atom into REF ImplementationRulesRep>> <<-- raises NotKnown if rules are not implemented>> RegisterRules: PROC [r: RulesRep]; <<-- Registrations can be repeated and features can be registered separately>> <<-- but technology must not contradict.>> RegisterLayerName: PROC [name: REF, layer: CD.Layer, technology: CD.Technology_NIL]; <<-- Registers more names for a layer>> RegisterTechnologyName: PROC [name: REF, technology: CD.Technology]; <<-- Registers more names for a technology>> END.