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
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.