<> <> <> <> DIRECTORY CD USING [Number, Object, Layer, undefLayer]; CMosCMContacts: CEDAR DEFINITIONS = BEGIN ContactType: TYPE = {burr, mDif, difShort, butt, mPol, mm2}; <<--burr, mDif, butt contacts can be characterized by the layer of their diffusion>> <<--(ndif, pdif, nwelCont, pwelCont)>> <<--difShort contacts can also be characterized by the layer of their diffusion,>> <<--but only (ndif, pdif) are allowed>> ContactPtr: TYPE = REF ContactRec; ContactRec: TYPE = RECORD [ typ: ContactType, wExt: CD.Number _ 0, lExt: CD.Number _ 0 ]; CreatePolyCon: PROC [l: CD.Number] RETURNS [CD.Object]; CreateDifCon: PROC [l: CD.Number, difLev: CD.Layer_CD.undefLayer] RETURNS [CD.Object]; CreateDifShortCon: PROC [difLev: CD.Layer_CD.undefLayer] RETURNS [CD.Object]; CreateButCon: PROC [difLev: CD.Layer_CD.undefLayer] RETURNS [CD.Object]; CreateBurCon: PROC [w, l: CD.Number, wex: CD.Number_0, lex: CD.Number_0, difLev: CD.Layer_CD.undefLayer] RETURNS [CD.Object]; CreateMmCon: PROC [l: CD.Number, wex: CD.Number_0, lex: CD.Number_0] RETURNS [CD.Object]; <<--All create procedures may (or may not) create references to>> <<--the same object. Therefore consider the contact objects as >> <<--readonly. If a contact needs to be modified create a new one!>> END.