<> <> <> <> DIRECTORY Pipal, PipalInt, PipalMos; PipalConnect: CEDAR DEFINITIONS = BEGIN <> <> <> <> <<>> Type: TYPE = {null, leaf, composite}; GetTypeProc: TYPE = PROC [object: Pipal.Object, mode: Mode] RETURNS [type: Type]; <<>> GetType: GetTypeProc; <> <<>> EnumerationType: GetTypeProc; <> NullType: GetTypeProc; <> LeafType: GetTypeProc; <> CompositeType: GetTypeProc; <> <> EachPortProc: TYPE = PROC [transformation: PipalInt.Transformation, portIndex: NAT, port: Pipal.Object] RETURNS [quit: BOOL _ FALSE]; <> <<>> EnumeratePortsProc: TYPE = PROC [object: Pipal.Object, mode: Mode, privateArea: PipalInt.Rectangle, eachPort: EachPortProc, transformation: PipalInt.Transformation _ []] RETURNS [quit: BOOL _ FALSE]; <> <> <<>> EnumeratePorts: EnumeratePortsProc; <> <> <<>> CountPorts: PROC [object: Pipal.Object, mode: Mode, privateArea: PipalInt.Rectangle] RETURNS [count: NAT _ 0]; <> <<>> EnumerationEnumeratePorts: EnumeratePortsProc; <> ComposerEnumeratePorts: EnumeratePortsProc; <> AtomicEnumeratePorts: EnumeratePortsProc; <> WellAtomicEnumeratePorts: EnumeratePortsProc; <> <> EachSatellitesProc: TYPE = PROC [satellites: LIST OF Pipal.ROPE] RETURNS [quit: BOOL _ FALSE]; EnumerateSatellitesProc: TYPE = PROC [object: Pipal.Object, mode: Mode, eachSatellites: EachSatellitesProc] RETURNS [quit: BOOL _ FALSE]; <> <<>> EnumerateSatellites: EnumerateSatellitesProc; <> <> <> <> <> <<>> StarEnumerateSatellites: EnumerateSatellitesProc; <> NullEnumerateSatellites: EnumerateSatellitesProc; <> <> EachAnnotationProc: TYPE = PROC [value: REF] RETURNS [quit: BOOL _ FALSE]; EnumerateAnnotationsProc: TYPE = PROC [object: Pipal.Object, mode: Mode, key: ATOM, eachAnnotation: EachAnnotationProc] RETURNS [quit: BOOL _ FALSE]; <> <<>> EnumerateAnnotations: EnumerateAnnotationsProc; <> <> <> <<>> AnnotationEnumerateAnnotations: EnumerateAnnotationsProc; <> NullEnumerateAnnotations: EnumerateAnnotationsProc; <> <> Composer: TYPE = REF ComposerRec; ComposerRec: TYPE = RECORD [ object: Pipal.Object, -- enumerated object provides correct childIndex for bindings ports: REF PortsSequence, nodes: SEQUENCE size: NAT OF Node <=ports.size.>> <> ]; PortsSequence: TYPE = RECORD [ports: SEQUENCE size: NAT OF Pipal.Object]; Node: TYPE = REF NodeRec; NodeRec: TYPE = RECORD [ bindings: SEQUENCE size: NAT OF Binding <> ]; Binding: TYPE = RECORD [childIndex, nodeIndex: NAT]; <> <> GetComposerProc: TYPE = PROC [object: Pipal.Object, mode: Mode, privateArea: PipalInt.Rectangle] RETURNS [cc: Composer]; <> <> <> <<>> GetComposer: GetComposerProc; <> <> <> <<>> EnumerationComposer: GetComposerProc; <> AbutComposer: GetComposerProc; <> RoutingComposer: GetComposerProc; <> TilingComposer: GetComposerProc; <> <> <> Mode: TYPE = REF ModeRec; ModeRec: TYPE = RECORD [ getTypeMethod, enumeratePortsMethod, enumerateSatellitesMethod, enumerateAnnotationsMethod, getComposerMethod: Pipal.Method, <> name: Pipal.ROPE, <> touch: PipalMos.TouchProc, <> nbOfLayers: NAT _ 1, <> objectLayer: PROC [Pipal.Object] RETURNS [LayerRange] _ NIL <> ]; LayerRange: TYPE = RECORD [min, max: NAT]; <> <> layoutMode: Mode; <> schematicMode: Mode; <> rawLayoutMode: Mode; <> <> <> <<>> InternalBug: SIGNAL []; <> CallerBug: SIGNAL []; <> <<>> END.