DIRECTORY CD, CDDirectory, Rope; CDExtras: CEDAR DEFINITIONS = BEGIN CreateDummyObject: PROC[design: CD.Design] RETURNS [CD.ObPtr]; DecomposeRect: PROC [r, test: CD.Rect, inside, outside: PROC[CD.Rect]_Skip]; Skip: PROC[CD.Rect]; EnumerateChildrenObjects: PROC [me: CD.ObPtr, p: CDDirectory.EnumerateObjectsProc, x: REF]; EnumerateDesignObjects: PROC [design: CD.Design, p: CDDirectory.EnumerateObjectsProc, x: REF]; BoundingBox: PROC [design: CD.Design] RETURNS [CD.DesignRect]; AppendExt: PROC [name, defaultExt : Rope.ROPE] RETURNS [filename: Rope.ROPE]; PushedCellName: PROC [design: CD.Design] RETURNS [Rope.ROPE]; RemoveProperties: PROC [design: CD.Design, key: REF]; ToLambda: PROC [n: CD.Number] RETURNS [Rope.ROPE]; PopToTopLevel: PROC [design: CD.Design]; Cellize: PROC [design: CD.Design, name: Rope.ROPE_NIL] RETURNS [cell: CD.ObPtr_NIL, pos: CD.DesignPosition]; MergeIn: PROC [design: CD.Design, from: CD.Design, name: Rope.ROPE_NIL, fullDirectory: BOOL_TRUE] RETURNS [ob: CD.ObPtr, pos: CD.DesignPosition]; MergeInObjects: PROC [design: CD.Design, from: CD.Design, objects: LIST OF CD.ObPtr]; END. RCDExtras.mesa (part of Chipndale) by Ch. Jacobi, October 24, 1983 11:48 am last edited by Ch. Jacobi, November 21, 1983 8:23 pm --create a dummy cell object which contains the whole design. --On future changes of the design, the dummy object may or may not --get obsolete. --the cell object is NOT put into any cell library --calls inside[part of r inside of test] --and outside[parts of r outside of test] --enumerate me and its children objects --defaultExt is appended to name, if name does not already has an extension --tries to remove the propertiy "key" from all objects of "design"; --may be delayed or incomplete --(only from objects, not applications...) --if "design" is pushed in, it will be popped out, either by flushing, --replacing cells or creating new cells --makes a single "cell" of of the "design", removes all applications; --pos: if "cell" is included at position "pos" in an empty design we would get "design" again --if "design" is pushed in, it will be popped out, either by flushing, --replacing cells or creating new cells --"from" is transfered to an object, and is included (transitive) to "design"'s directory --"from" then may be resetted (preserving the rule: any object is in at most one directory) --the caller is assumed to have the locks of both designs --if "from" is pushed in, it's merged copy will be popped out, either by flushing, --replacing or creating new cells --"name" replaces "from"'s design name for the new created object, but it is a hint only --"pos": if "ob" is included at position "pos" in an empty design we would get "from" again --"fullDirectory": whether all objects of "from"'s directory are merged to design, --or only those used by "from"'s top level --the "from"'s object's may change name to avoid conflicts with "design"'s directory --ob gets nil if "from" is empty --technologies must be compatible --"objects" which are in "from"'s directory are transferrerd (transitive) to "design"'s directory --"from" then may be resetted (preserving the rule: any object is in at most one directory) --the caller is assumed to have the locks of both designs --the object's may change name to avoid conflicts with "design"'s directory --technologies must be compatible This module contains procedures which I think could be of general use but are not used by my own code. Therefore: Each use of these procedure should be reported to me, so I can see their value. Sometimes the procedures are not too good tested. This module contains further procedures which are not yet put into the right module; The procedures might change their module without further notifications. Ê6˜Jšœ"™"J˜Jšœ(™(Jšœ4™4J˜J˜šÏk ˜ Jšœ˜J˜—šÏnœœ œ˜Jšœ˜J˜š žœœ œ œœ˜>Jšœ=™=JšœB™BJšœ™Jšœ2™2J˜—š ž œœ œœœ ˜LJšœ(™(Jšœ)™)Jšžœœœ˜J˜—šžœœœ0œ˜[Jšœ'™'J˜—Jšžœœ œ1œ˜^J˜Jš ž œœ œ œœ ˜>J˜š ž œœœœœ˜MJšœK™K—J˜Jš žœœ œ œœ˜=J˜šžœœ œœ˜5JšœC™CJšœ™Jšœ*™*—J˜Jš žœœœ œœ˜2J˜šž œœ œ˜(JšœG™GJšœ'™'J˜—šžœœ œœœœœœœ˜lJšœF™FJšœ]™]JšœG™GJšœ'™'—J˜šžœœ œœœœœœœœ œ˜‘JšœY™YJšœ[™[Jšœ9™9JšœS™SJšœ!™!JšœX™XJšœ[™[JšœR™RJšœ*™*JšœT™TJ™ Jšœ!™!J™—šžœœ œœœœœ˜UJšœa™aJšœ[™[Jšœ9™9JšœK™KJšœ!™!J™—Jšœ˜J˜—JšœE™EJšœO™OJšœJ™JJšœ™J˜JšœL™LJšœO™OJ˜—…—nö