<> <> <> <<>> <> <<>> DIRECTORY Rope USING [ROPE], IntHashTable USING [Table]; ExpertLibRead: CEDAR DEFINITIONS ~ BEGIN LibTable: TYPE = IntHashTable.Table; PinPos: TYPE = RECORD[ x: INT, y: INT ]; PartPinInfo: TYPE = RECORD[ pinPos: PinPos, diameter: NAT, site: NAT, padStack: NAT, swap: NAT, type: NAT, name: Rope.ROPE ]; LibEntry: TYPE = REF LibEntryRep; LibEntryRep: TYPE = RECORD[ partName: Rope.ROPE, partNumber: Rope.ROPE, partPinInfo: SEQUENCE size: NAT OF PartPinInfo ]; <> ReadLibFile: PROC [file: Rope.ROPE] RETURNS [libTable: LibTable]; <> <<>> <> <> PartName: PROC [libTable: LibTable, entryNumber: CARD] RETURNS [partName: Rope.ROPE]; << Retrieving the "part number" of an entry>> PartNumber: PROC [libTable: LibTable, entryNumber: CARD] RETURNS [partNumber: Rope.ROPE]; << Retrieving the number of pins of an entry>> PinNumber: PROC [libTable: LibTable, entryNumber: CARD] RETURNS [pinNumber: NAT]; <> <<>> <> RelativePinPosition: PROC [libTable: LibTable, entryNumber: CARD, pin: NAT] RETURNS [pinPos: PinPos]; <> <<>> <<>> <<>> <> FirstPinOfThisType: PROC [libTable: LibTable, entryNumber: CARD, type: NAT, swap: NAT] RETURNS [pinNumber: NAT]; <> <<>> <> IsPinOfThisType: PROC [libTable: LibTable, entryNumber: CARD, pinNumber: CARD, type: NAT, swap: NAT] RETURNS [yes: BOOLEAN]; <> END.