oaDerivedLayerDef.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaDerivedLayerDef.h
00004 //
00005 // This file contains the definition for the following classes.
00006 //      oaLayerOp
00007 //          This is an enum wrapper class for oaLayerOpEnum. The enum values 
00008 //          represent various layer operations that are used to define derived 
00009 //          layers.
00010 //      oaDerivedLayerDef
00011 //          This class is used to define derived layers and enforces the number
00012 //          of layers of a derived layer.
00013 //
00014 // *****************************************************************************
00015 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00016 // Integration Initiative, this material may not be copied, modified,
00017 // re-published, uploaded, executed, or distributed in any way, in any medium,
00018 // in whole or in part, without prior written permission from Cadence.
00019 //
00020 //                Copyright 2005 Cadence Design Systems, Inc.
00021 //                           All Rights Reserved.
00022 //
00023 //  $Author: icftcm $
00024 //  $Revision: #1 $
00025 //  $Date: 2010/08/09 $
00026 //  $State: Exp $
00027 // *****************************************************************************
00028 // *****************************************************************************
00029 
00030 
00031 
00032 #if !defined(oaDerivedLayerDef_P)
00033 #define oaDerivedLayerDef_P
00034 
00035 
00036 
00037 // *****************************************************************************
00038 // Nested includes
00039 // *****************************************************************************
00040 #include "oaTech.h"
00041 
00042 
00043 
00044 // *****************************************************************************
00045 // Declare and define types in the OpenAccess namespace.
00046 // *****************************************************************************
00047 BEGIN_OA_NAMESPACE
00048 
00049 
00050 
00051 // *****************************************************************************
00052 // oaLayerOpEnum
00053 // *****************************************************************************
00054 #define oavNumLayerOps  26
00055 
00056 enum oaLayerOpEnum {
00057     oacAndLayerOp                   = 0,
00058     oacOrLayerOp                    = 1,
00059     oacNotLayerOp                   = 2,
00060     oacXorLayerOp                   = 3,
00061     oacTouchingLayerOp              = 4,
00062     oacButtOnlyLayerOp              = 5,
00063     oacUserDefinedLayerOp           = 6,
00064     oacInsideLayerOp                = 7,
00065     oacOutsideLayerOp               = 8,
00066     oacOverlappingLayerOp           = 9,
00067     oacStraddlingLayerOp            = 10,
00068     oacAvoidingLayerOp              = 11,
00069     oacButtingLayerOp               = 12,
00070     oacCoincidentLayerOp            = 13,
00071     oacCoincidentOnlyLayerOp        = 14,
00072     oacEnclosingLayerOp             = 15,
00073     oacButtingOrCoincidentLayerOp   = 16,
00074     oacButtingOrOverlappingLayerOp  = 17,
00075     oacAreaLayerOp                  = 18,
00076     oacGrowLayerOp                  = 19,
00077     oacShrinkLayerOp                = 20,
00078     oacGrowVerticalLayerOp          = 21,
00079     oacGrowHorizontalLayerOp        = 22,
00080     oacShrinkVerticalLayerOp        = 23,
00081     oacShrinkHorizontalLayerOp      = 24,
00082     oacSelectLayerOp                = 25
00083 };
00084 
00085 
00086 
00087 // *****************************************************************************
00088 // oaLayerOp
00089 // *****************************************************************************
00090 class OA_TECH_DLL_API oaLayerOp {
00091 public:
00092                             oaLayerOp(oaLayerOpEnum valueIn);
00093                             oaLayerOp(const oaString &name);
00094                             ~oaLayerOp();
00095 
00096     const oaString          &getName() const;
00097 
00098                             operator                oaLayerOpEnum() const;
00099 
00100 private:
00101     static const oaString   *initNames();
00102 
00103     oaLayerOpEnum           value;
00104 
00105     static const oaString   names[];
00106 };
00107 
00108 
00109 
00110 // *****************************************************************************
00111 // oaDerivedLayerDef
00112 // *****************************************************************************
00113 class OA_TECH_DLL_API oaDerivedLayerDef : public oaSessionObject {
00114 public:
00115     static oaDerivedLayerDef    *create(const oaString  &name,
00116                                         oaUInt4         numLayers);
00117     static oaDerivedLayerDef    *get(oaLayerOp type);
00118     static oaDerivedLayerDef    *find(const oaString &name);
00119 
00120     void                        getName(oaString &name) const;
00121     oaUInt4                     getNumLayers() const;
00122     oaBoolean                   isBuiltIn() const;
00123 
00124     void                        destroy();
00125     void                        remove(oaTech *tech);
00126 };
00127 
00128 
00129 
00130 #if defined(OA_TECH_DLL_EXTERN)
00131 
00132 OA_TECH_DLL_EXTERN template
00133  class OA_TECH_DLL_API oaCollection<oaDerivedLayerDef, oaSession>;
00134 
00135 #endif
00136 
00137 
00138 
00139 // *****************************************************************************
00140 // Tech objects derived from oaSessionObject
00141 // *****************************************************************************
00142 template<>
00143 class oaTraits<oaDerivedLayerDef> {
00144 public:
00145     typedef oaSessionObject         parentType;
00146     typedef oaDerivedLayerParamTbl  tblType;
00147     enum {domain = oacNoDomain};
00148     enum {isMultiDomain = false};
00149     enum {dbType = oacBaseDBType};
00150     enum {isConcrete = true};
00151     enum {objectTypeEnumVal = oacDerivedLayerDefType};
00152 };
00153 
00154 
00155 
00156 END_OA_NAMESPACE
00157 
00158 #endif

Return to top of page