<> <> <> DIRECTORY AMTypes, Asserting, Basics, Core, IO, PrincOps, Rope, RedBlackTree, RoseBehavior, RoseEvents, RosePrivates, VFonts; RoseWireTypes: CEDAR DEFINITIONS = <> BEGIN LORA: TYPE = LIST OF REF ANY; ROPE: TYPE = Rope.ROPE; LOR: TYPE = LIST OF ROPE; STREAM: TYPE = IO.STREAM; TV: TYPE = AMTypes.TV; Assertion: TYPE = Asserting.Assertion; Assertions: TYPE = Asserting.Assertions; SymbolTable: TYPE = RedBlackTree.Table; WatcherList: TYPE = RoseEvents.WatcherList; Watcher: TYPE = RoseEvents.Watcher; Drive: TYPE = RoseBehavior.Drive; Strength: TYPE = RoseBehavior.Strength; PortPath: TYPE = RoseBehavior.PortPath; Wire: TYPE = Core.Wire; WordPtr: TYPE = LONG POINTER TO CARDINAL; Ptr: TYPE = PrincOps.BitAddress; nilPtr: Ptr = [word: NIL, bit: 0]; WireFlavor: TYPE = {simple, switch, drive}; WireFlavorName: ARRAY WireFlavor OF ROPE; BehaviorClassWiring: TYPE = REF BehaviorClassWiringRep; BehaviorClassWiringRep: TYPE = ARRAY WireFlavor OF RoseWireClass; BehaviorTypeWiring: TYPE = REF BehaviorTypeWiringRep; BehaviorTypeWiringRep: TYPE = ARRAY WireFlavor OF RoseWireType; RoseWireType: TYPE = REF RoseWireTypeRec; RoseWireTypeRec: TYPE = RECORD [ class: RoseWireClass, typeData: REF ANY, length: NAT, other: Assertions _ NIL]; RoseWireClass: TYPE = REF RoseWireClassRec; RoseWireClassRec: TYPE = RECORD [ structure: Core.WireStructure, dereference: BOOL, <> addressContaining: BOOL, <> <> length: INTEGER _ LAST[INTEGER], <<= type.length when record;>> <> classData: REF ANY _ NIL, super: RoseWireSuperClass ]; RoseWireSuperClass: TYPE = REF RoseWireSuperClassRec; RoseWireSuperClassRec: TYPE = RECORD [ <> GetType: PROC [RoseWireClass, Wire] RETURNS [RoseWireType], ListFormats: PROC [RoseWireType] RETURNS [LOR], <> GetFormat: PROC [RoseWireType, ROPE] RETURNS [Format], <> <> SelectorOffset: PROC [RoseWireType, Selector] RETURNS [dBits: NAT] _ NIL, <> FieldName: PROC [RoseWireClass, INT] RETURNS [ROPE] _ NIL, <> SubType: PROC [RoseWireType, Selector] RETURNS [RoseWireType] _ NIL, SubClass: PROC [RoseWireClass, Selector] RETURNS [RoseWireClass] _ NIL, <> Bits: PROC [RoseWireType] RETURNS [INT], <> MesaRepresentation: PROC [RoseWireClass] RETURNS [Mesa], <> MesaRepAux: PROC [RoseWireClass] RETURNS [Mesa] _ NIL, <> <> ReferentRep: PROC [rwc: RoseWireClass, wireExpr: ROPE] RETURNS [ROPE] _ NIL, <> <> CreateReferent: PROC [RoseWireType] RETURNS [LONG POINTER] _ NIL, <> <> flavor: WireFlavor, Initialize: PROC [rwt: RoseWireType, p: Ptr, steady: BOOL], Transduce: PROC [fromS: Strength, fromT, toT: RoseWireType, fromP, toP: Ptr] _ NIL, InitQ: PROC [rwt: RoseWireType, p: Ptr, cap: Strength] _ NIL, <> InitUD: PROC [rwt: RoseWireType, p: Ptr, cap: Strength] RETURNS [isInput: BOOL] _ NIL, <> ComputeLevel: PROC [rwt: RoseWireType, p: Ptr, xPhobic: BOOL] RETURNS [delay: BOOL] _ NIL, < would prefer not to get current answer.>> <> CopyQ, CopyUD, CopyLevel: PROC [rwt: RoseWireType, from, to: Ptr] _ NIL, EqualUD: PROC [rwt: RoseWireType, p1, p2: Ptr] RETURNS [equal: BOOL] _ NIL, MaxinQ, MaxinUD: PROC [rwt: RoseWireType, from, to: Ptr] RETURNS [increase: BOOL] _ NIL <> ]; Mesa: TYPE = RECORD [mesa: ROPE, directory, imports: LOR _ NIL]; Selector: TYPE = RECORD [variant: SELECT kind: * FROM whole => [], subscript--of sequence--, field--of record-- => [index: INT], ENDCASE]; WireValBreak: IO.BreakProc; < sepr,>> <<',, ':, '[, '] => break,>> < other>> Format: TYPE = REF FormatRep; FormatRep: TYPE = RECORD [ FormatValue: PROC [RoseWireType, Format, Ptr] RETURNS [ROPE], ParseValue: PROC [RoseWireType, Format, Ptr, STREAM] RETURNS [BOOLEAN], MaxWidth: PROC [RoseWireType, Format, VFonts.Font] RETURNS [INT], formatData: REF ANY _ NIL, key: ROPE ]; END.