<> <> <> <> <> <> DIRECTORY Core, CoreClasses, IO, Pipal, PipalConnect, PipalCore, RefTab; PipalSinix: CEDAR DEFINITIONS = BEGIN <> <> <> <> <> Mode: TYPE = REF ModeRec; layoutMode: Mode; <> schematicsMode: Mode; <> rawLayoutMode: Mode; <> <> Context: TYPE = REF; ExtractProc: TYPE = PROC [object: Pipal.Object, mode: Mode, context: Context _ NIL] RETURNS [result: REF, props: Core.Properties _ NIL]; <> <> <<- NIL. The object should be forgotten completely.>> <<- a Core.Wire. The returned wire is decorated with mode.decoration.portsProp. There might be a name. The returned wire is always copied by Sinix, so caching should not be feared... Dagness is considered. props must be NIL. >> <<- a LIST OF Core.Wire. The returned wires are decorated with mode.decoration.portsProp. There might be a name. The returned wire are always copied by Sinix, so caching should not be feared... Dagness is considered across returned wires. props must be NIL. >> <<- a Core.CellType. The returned cellType has its public decorated with mode.decoration. Returned props allows putting properties on CellInstances.>> <> Extract: ExtractProc; <> <> <> <<>> RegisterExtractProc: PROC [key: ATOM, extractProc: ExtractProc]; <> FetchExtractProc: PROC [key: ATOM] RETURNS [extractProc: ExtractProc _ NIL]; <> <<>> ExtractConnectized: ExtractProc; <> ExtractCellAsWire: ExtractProc; <> ExtractNull: ExtractProc; <> <> <> iconClass: Core.CellClass; CreateIcon: PROC [cellType: Core.CellType, name: Core.ROPE _ NIL, props: Core.Properties _ NIL] RETURNS [icon: Core.CellType]; <> <> <<>> InternalBug: SIGNAL []; <> CallerBug: SIGNAL []; <> FusionPropMismatch: SIGNAL [object: Pipal.Object, prop: ATOM, value1, value2: REF]; <> <> <> <<>> FusionStructureMismatch: SIGNAL [object: Pipal.Object, wire1, wire2: Core.Wire]; <> <> <<>> StructureMismatch: SIGNAL [object: Pipal.Object, index: NAT, actual, subPublic: Core.WireSeq]; <> <> <<>> FusionByNameMismatch: SIGNAL [object: Pipal.Object, msg: Core.ROPE, wire: Core.Wire]; <> <> <> <<>> StructuralLoop: SIGNAL [object: Pipal.Object, wire: Core.Wire]; <> <> <> ModeRec: TYPE = RECORD [ decoration: PipalCore.Decoration, <> extractMethod: Pipal.Method, <> connectMode: PipalConnect.Mode, extractAnnotationProp: ATOM, objectEqual: PROC [Pipal.Object, Context, Context] RETURNS [BOOL], <> postProcessFused: PostProcessProc ]; PostProcessProc: TYPE = PROC [mode: Mode, object: Pipal.Object, context: Context, fused: RefTab.Ref, instances: LIST OF CoreClasses.CellInstance]; SchematicsFusionByName: PUBLIC PostProcessProc; CreateRoot: PROC [fused: RefTab.Ref, size: NAT] RETURNS [wire: Core.Wire]; RootWire: PROC [fused: RefTab.Ref, wire: Core.Wire] RETURNS [rootWire: Core.Wire]; EnumerateRoots: PUBLIC PROC [fused: RefTab.Ref, each: PROC [wire: Core.Wire]]; StructuredFusion: PROC [mode: Mode, object: Pipal.Object, fused: RefTab.Ref, wire1, wire2: Core.Wire] RETURNS [wire: Core.Wire]; <> PutF: PROC [format: Core.ROPE, v1, v2, v3, v4, v5: IO.Value _ [null[]]]; <> <<>> NonCachingExtract: PRIVATE ExtractProc; <> <> <> <<>> END.