<> <> <> <> <> <> DIRECTORY CD, Core, CoreGeometry, InstanceTable, IO, RefTab; Sinix: CEDAR DEFINITIONS = BEGIN <> <> <> <> CellType: TYPE = Core.CellType; Wire: TYPE = Core.Wire; WireSeq: TYPE = Core.WireSeq; Wires: TYPE = Core.Wires; Object: TYPE = CD.Object; Properties: TYPE = Core.Properties; ROPE: TYPE = Core.ROPE; <> ExtractProc: TYPE = PROC [obj: Object, mode: Mode, properties: CD.PropList _ NIL, userData: REF _ NIL] RETURNS [result: REF, props: Properties _ NIL]; <> <> <<- NIL. The object should be forgotten completely.>> <<- a Wire. The returned wire is decorated with mode.decoration.pinsProp. There might be a name. The returned wire is always copied by Sinix, so caching should not be feared... Dagness is considered.>> <<- a LIST OF Wire. The returned wires are decorated with mode.decoration.pinsProp. 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.>> <<- a CellType. The returned cellType has its public decorated with mode.decoration.>> <> <> Extract: ExtractProc; <> <> <> RegisterExtractProc: PROC [key: ATOM, extractProc: ExtractProc]; <> <> <> <<>> ExtractCell: ExtractProc; <> <> <> ExtractAbut: ExtractProc; <> <> ExtractRotation: ExtractProc; <> ExtractExpand: ExtractProc; <> ExtractRect: ExtractProc; <> <> <> <> ExtractPin: ExtractProc; <> <> <> <> ExtractAtomic: ExtractProc; <> <> <> ExtractWellAtomic: ExtractProc; <> <> <> ExtractTransistor: ExtractProc; <> ExtractRouting: ExtractProc; <> ExtractTiling: ExtractProc; <> <> ExtractIndirect: ExtractProc; <> ExtractCellAsWire: ExtractProc; <> ExtractNull: ExtractProc; <> <> <> Mode: TYPE = REF ModeRec; ModeRec: TYPE = RECORD [ decoration: CoreGeometry.Decoration, <> extractProcProp: ATOM, <> <> instanceEqualProc: PROC [Object, CD.PropList, REF, CD.PropList, REF] RETURNS [BOOL], <> objectEqualProc: PROC [Object, REF, REF] RETURNS [BOOL], <> nbOfLayers: NAT _ 1, <> instanceLayer: PROC [CoreGeometry.Instance] RETURNS [LayerRange], <> userData: PROC [CD.Design] RETURNS [REF] _ NIL, <> fusionByName: FusionByNameMethod _ layout, <> touchProc: CoreGeometry.TouchProc, <> nameProc: PROC [Object, REF] RETURNS [ROPE] <> ]; LayerRange: TYPE = RECORD [min, max: NAT]; <> FusionByNameMethod: TYPE = {layout, none, schematics}; AlwaysTrue: PROC [Object, REF, REF] RETURNS [BOOL _ TRUE]; CompareProperties: PROC [obj: Object, properties1: CD.PropList, userData1: REF, properties2: CD.PropList, userData2: REF] RETURNS [BOOL]; DefaultName: PROC [obj: Object, userData: REF] RETURNS [ROPE]; DefaultInstanceLayer: PROC [CoreGeometry.Instance] RETURNS [LayerRange]; satellitesProp: ATOM; <> <> <> <<>> InternalBug: SIGNAL [name: ROPE]; <> <> CallerBug: SIGNAL []; <> FusionPropMismatch: SIGNAL [name: ROPE, prop: ATOM, value1, value2: REF]; <> <> <> <<>> FusionStructureMismatch: SIGNAL [name: ROPE, wire1, wire2: Wire]; <> <> <<>> StructureMismatch: SIGNAL [name: ROPE, index: NAT, actual, subPublic: WireSeq]; <> <> <<>> FusionByNameMismatch: SIGNAL [name, msg: ROPE, wire: Wire]; <> <> <> <<>> StructuralLoop: SIGNAL [name: ROPE, wire: Wire]; <> <> <> <> iconClass: Core.CellClass; CreateIcon: PROC [cellType: CellType, name: ROPE _ NIL, props: Core.Properties _ NIL] RETURNS [icon: CellType]; <> <> lazyExtractClass: Core.CellClass; CreateLazyExtract: PROC [public: WireSeq, obj: Object, mode: Mode, properties: CD.PropList _ NIL, userData: REF _ NIL] RETURNS [cellType: CellType]; <> InstanceTableFromPublic: PROC [decoration: CoreGeometry.Decoration, bbox: CD.Rect, public: WireSeq] RETURNS [table: InstanceTable.Table]; < public>> PinsCorrespondingToSeveralPublics: SIGNAL [obj: Object, public1, public2: Wire, name1, name2: ROPE, geometry: CoreGeometry.Instances]; DecorateObjectWithLazyExtract: PROC [public: WireSeq, obj: Object, mode: Mode, properties: CD.PropList _ NIL, userData: REF _ NIL]; <> <> MapExtractedToSource: PROC [source, extracted: WireSeq, obj: Object, mode: Mode] RETURNS [extractedToSource: RefTab.Ref]; <> PutF: PROC [format: ROPE, v1, v2, v3, v4, v5: IO.Value _ [null[]]]; <> <<>> FlushCache: PROC [obj: Object]; <> <<>> NameFromSatellites: PROC [obj: Object, properties: CD.PropList] RETURNS [name: ROPE _ NIL]; <> <> <<>> FuseProperties: PRIVATE PROC [mode: Sinix.Mode, fused, root: Wire, name: ROPE]; <> <> END.