DIRECTORY CD, Core, Rope USING [ROPE]; CDCore: CEDAR DEFINITIONS = BEGIN -- General generateLayout: ATOM = $GenLayout; -- Generating Layout Problem: SIGNAL [messagetype: ProblemType, message: Rope.ROPE _ NIL]; ProblemType: TYPE = {noGenerator, generatorParameterError, generatorFailed, other, parameterError, internalError}; CreateCDFromCore: PROC [coreDesign: Core.Design, coreCellType: Core.CellType, cdDesign: CD.Design] RETURNS [ob: CD.Object]; InvalidateCache: PROC [what: REF]; -- Tools CreateProc: TYPE = PROC [coreDesign: Core.Design, coreCellType: Core.CellType, cdDesign: CD.Design, param: LIST OF REF ANY _ NIL, key: ATOM] RETURNS [ob: CD.Object _ NIL]; RegisterGenerator: PROC [createProc: CreateProc, name: ATOM, registrationKey: REF_NIL]; END. XCDCore.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, August 14, 1985 2:35:33 pm PDT Last Edited by Christian Jacobi, September 10, 1985 4:43:28 pm PDT --Put this property on Core CellType or CellClass to find generation procedures: -- the value of this property (either ATOM or LIST OF REF ANY [using first]) -- determines which CDCore generator should be called --[Core structure creators which do not load ChipNDale may use the Atom value directly] --The file CDCoreDoc has a pointer to a list of some registered CDCore generators --may raise Problem or Core.StructureError --tries to cache objects -- cache may be wrong if ChipNDale child objects are edited -- cache may miss hit if coreDesign or cdDesign used in other pairings --what: either CD.Object or Core.CellType --does not propagate to parent structures --param: parameters, value of generateLayout property, key removed --key: registration key; first field of generateLayout property --may raise CD.Error[doubleRegistration] --double registration is allowed if registrationKey not NIL and equal Êؘšœ ™ Jšœ Ïmœ1™