DIRECTORY CD, Rope; CDImports: CEDAR DEFINITIONS = BEGIN IsImport: PROC [ob: CD.Object] RETURNS [BOOL] = INLINE { RETURN [ISTYPE[ob.specificRef, ImportPtr]] }; importsClass: PRIVATE READONLY REF CD.ObjectClass; ImportPtr: TYPE = REF ImportRep; ImportRep: TYPE = RECORD [ --consider READONLY boundInstance: CD.Instance _ NIL, -- NIL if not yet bound ir: CD.Rect _ [0, 0, -1, -1], objectName: Rope.ROPE _ NIL, designName: Rope.ROPE _ NIL ]; ImportList: TYPE = RECORD [list: LIST OF REF ImportDesign]; -- describes all the imports of a design ImportDesign: TYPE = RECORD[ -- consider READONLY importeeName: Rope.ROPE _ NIL, loaded: BOOL _ FALSE, --a readonly version of the design is loaded reservedForCDImports: PRIVATE REF _ ]; -- describes imports of one particular importee-design BoolOrInteractive: TYPE = {true, false, interactive}; CreateImport: PROC [into: CD.Design, objectName, importeeName: Rope.ROPE] RETURNS [ob: CD.Object]; Load: PROC [into: CD.Design, importeeName: Rope.ROPE, overload, allowConflicts: BoolOrInteractive_true] RETURNS [done: BOOL]; MergeInImports: PROC [into: CD.Design, importeeName: Rope.ROPE]; GetImportList: PROC [design: CD.Design] RETURNS [REF ImportList]; GetImportEntry: PROC [into: CD.Design, importeeName: Rope.ROPE, createIfNotFound: BoolOrInteractive_false] RETURNS [REF ImportDesign]; HasUnloadedImports: PROC [design: CD.Design] RETURNS [BOOL]; END. $CDImports.mesa (part of ChipNDale) Copyright c 1984, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, March 20, 1984 5:50:51 pm PST last edited Christian Jacobi, September 24, 1985 5:34:27 pm PDT Objects which reference Objects in other designs are called imports. No circular imports. --Creates an import object. --Design importeeName must be loaded. (to know size of object!) --Returns nil if not done. --Multiple creation may return the same object. --Load or Reloads an imported design importeeName. --Creates an import entry into the import list if necessary. --(importeeName is fetched using CDRemote's FetchDesign) --Procedure talks to TerminalIO. --overload: allows reloading if importeeName is already loaded. --allowConflicts; If conflicts are disabled, objects with (size) conflict will not be loaded. -- indirect imports --Includes all the imported and loaded objects from design importeeName (including --their transitive closure; but not indirect imports) into the design "into". -- Returns the import list of the design. -- Consider the list and its entries READONLY. -- Returns an entry of the import list. -- Consider the returned record READONLY -- NIL if not found and not created -- Returns "design has imports or imported objects wich are not yet loaded". Κψ˜codešœ$™$Kšœ Οmœ7™BKšœ3™3Kšœ?™?K˜—šΟk ˜ Kšžœ˜ —K˜KšΠbl œžœž œ˜Kšž˜K˜™DK™K™K™—K˜š Οnœžœžœ žœžœžœ˜8Kšžœžœ˜*K˜—K˜Kš œžœžœžœžœ ˜2K˜Kšœ žœžœ ˜ šœ žœžœΟc˜.Kšœžœ žœ‘˜:Kšœžœ˜Kšœžœžœ˜Kšœžœž˜Kšœ˜K˜—š œ žœžœžœžœžœ˜=Kš‘(˜(—šœžœžœ‘˜1Kšœžœžœ˜ Kšœžœžœ‘,˜BKšœžœž˜#Kšœ˜Kš‘6˜6K˜—Kšœžœ˜5K˜š   œžœžœ(žœžœžœ ˜bKšœ™Kšœ?™?Kšœ™K™/—K˜š Πbnœžœžœžœ4žœžœ˜Kšœ4™4Kšœ‘9œ™>Kš‘8™8K™ Kšœ?™?Kšœ]™]K™—K˜š œžœžœžœ˜@KšœT™TKšœM™MK˜—š   œžœ žœ žœžœ ˜AKšœ)™)Kšœ.™.K˜—š  œžœžœžœ-žœžœ˜†Kšœ'™'Kšœ(™(Kšœ#™#K˜—š  œžœ žœ žœžœ˜