<> <> <> <> DIRECTORY CD; CDLayers: CEDAR DEFINITIONS = BEGIN <> <> <> <> <<>> <> <> <<>> <<--Procedures for designer and interactive editor>> <<>> CurrentLayer: PROC [design: CD.Design] RETURNS [CD.Layer]; <<--Returns current layer for this design>> LayerWidth: PROC [design: CD.Design, layer: CD.Layer] RETURNS [CD.Number]; <<--Returns current width for layer "layer" in this design>> PlaceholderToAbstract: PROC [design: CD.Design, layer: CD.Layer] RETURNS [CD.Layer]; <<--Returns corresponding abstract or paint layer given an placeholder layer for this design>> <<--Low level stuff for any purpose >> AbstractToPaint: PROC [layer: CD.Layer] RETURNS [CD.Layer] = INLINE { <<--Returns corresponding paint layer given an abstract layer>> <<--Identity for paint layers>> <<--CD.undefLayer for abstract layer not representing a paint layer>> <<--CD.errorLayer or CD.undefLayer for placeholder layers>> RETURN [layerData[layer].paint] }; Kind: PROC [layer: CD.Layer] RETURNS [LayerKind] = INLINE { <<--Returns usage of layer>> RETURN [layerData[layer].kind]; }; SuppressIR: PROC [layer: CD.Layer] RETURNS [BOOL] = INLINE { RETURN [layerData[layer].suppressIR]; }; LayerKind: TYPE = {paint, abstract, placeholder}; <> <> <> <> <> <> <> <> <> <> LayerData: TYPE = RECORD [paint, well: CD.Layer_CD.undefLayer, kind: LayerKind_placeholder, suppressIR: BOOL_FALSE, wSurr: BYTE_0]; layerData: READONLY REF READONLY ARRAY CD.Layer OF LayerData; <<>> <<--Procedures for control panel implementors>> SetCurrentLayer: PROC [design: REF, layer: CD.Layer]; <<--Technology instead of design for initializing defaults>> SetLayerWidth: PROC [design: REF, layer: CD.Layer, width: CD.Number]; <<--NIL or technology instead of design for initializing defaults>> SetPlaceholderToAbstract: PROC [design: REF, placeholder, abstract: CD.Layer]; <<--set a placeholder to point to an abstract or paint layer >> <<--NIL or technology instead of design for initializing defaults>> RegisterNotifiers: PRIVATE PROC [layer: DesignNotifyProc_NIL, width: LayerNotifyProc_NIL, placeholder: LayerNotifyProc_NIL]; <<--Registeres notifiers which are called when a default value for a design changes>> DesignNotifyProc: TYPE = PROC [design: CD.Design]; LayerNotifyProc: TYPE = PROC [design: CD.Design, layer: CD.Layer]; <<--These Notify Proc's are not monitored and might pass each other. >> <<--The actual new default values have to be querried inside. >> <<>> <<>> <<--Procedures for Technology implementors>> MakeAbstract: PRIVATE PROC [abstract: CD.Layer, paint: CD.Layer _ CD.undefLayer, well: CD.Layer _ CD.undefLayer, wSurr: BYTE _ 0]; <<--Makes "abstract" an abstract layer>> MakePlaceholder: PRIVATE PROC [placeholder: CD.Layer, defaultsTo: CD.Layer _ CD.undefLayer]; <<--Makes "placeholder" a placeholder layer>> MakePaint: PRIVATE PROC [layer: CD.Layer]; <<--Makes "layer" a paint layer>> MakeSuppressIR: PRIVATE PROC [layer: CD.Layer, suppressIR: BOOL _ TRUE]; <<--Sets "layers" suppressIR field>> END.