00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaSizedLayer.h 00004 // 00005 // This file contains the definition for the oaSizedLayer class. The 00006 // oaSizedLayer class defines a sized layer, which is formed from a 00007 // layers and a sizing operation on that layer oaSizeOp. 00008 // 00009 // ***************************************************************************** 00010 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00011 // Integration Initiative, this material may not be copied, modified, 00012 // re-published, uploaded, executed, or distributed in any way, in any medium, 00013 // in whole or in part, without prior written permission from Cadence. 00014 // 00015 // Copyright 2002-2005 Cadence Design Systems, Inc. 00016 // All Rights Reserved. 00017 // 00018 // $Author: icftcm $ 00019 // $Revision: #1 $ 00020 // $Date: 2010/08/09 $ 00021 // $State: Exp $ 00022 // ***************************************************************************** 00023 // ***************************************************************************** 00024 00025 00026 00027 #if !defined(oaSizedLayer_P) 00028 #define oaSizedLayer_P 00029 00030 00031 00032 // ***************************************************************************** 00033 // Nested includes 00034 // ***************************************************************************** 00035 #include "oaLayer.h" 00036 00037 00038 00039 // ***************************************************************************** 00040 // Declare and define types in the OpenAccess namespace. 00041 // ***************************************************************************** 00042 BEGIN_OA_NAMESPACE 00043 00044 00045 00046 // ***************************************************************************** 00047 // oaSizeOpEnum 00048 // ***************************************************************************** 00049 #define oavNumSizeOps 2 00050 00051 enum oaSizeOpEnum { 00052 oacGrowSizeOp = 0, 00053 oacShrinkSizeOp = 1 00054 }; 00055 00056 00057 00058 // ***************************************************************************** 00059 // oaSizeOp 00060 // ***************************************************************************** 00061 class OA_TECH_DLL_API oaSizeOp { 00062 public: 00063 oaSizeOp(oaSizeOpEnum valueIn); 00064 oaSizeOp(const oaString &name); 00065 ~oaSizeOp(); 00066 00067 const oaString &getName() const; 00068 00069 operator oaSizeOpEnum() const; 00070 00071 private: 00072 oaSizeOpEnum value; 00073 00074 static const oaString names[]; 00075 }; 00076 00077 00078 00079 // ***************************************************************************** 00080 // oaSizedLayer 00081 // ***************************************************************************** 00082 class OA_TECH_DLL_API oaSizedLayer : public oaLayer { 00083 public: 00084 static oaSizedLayer *create(oaLayer *layer, 00085 oaSizeOp operation, 00086 oaDist value, 00087 const oaString &name, 00088 oaLayerNum number); 00089 00090 static oaSizedLayer *find(const oaTech *tech, 00091 const oaString &name); 00092 static oaSizedLayer *find(const oaTech *tech, 00093 oaLayerNum number); 00094 static oaSizedLayer *find(const oaLayer *layer, 00095 oaSizeOp operation, 00096 oaDist value); 00097 00098 oaLayer *getLayer() const; 00099 oaSizeOp getOperation() const; 00100 oaDist getValue() const; 00101 }; 00102 00103 00104 00105 // ***************************************************************************** 00106 // oaTech traits 00107 // ***************************************************************************** 00108 template<> 00109 class oaTraits<oaSizedLayer> { 00110 public: 00111 typedef oaLayerModTypeEnum modTypeType; 00112 typedef oaLayer parentType; 00113 enum {dtIndex = oacLayerDataType}; 00114 enum {dataTypeEnumVal = oacLayerDataType}; 00115 enum {dbType = oacTechDBType}; 00116 enum {domain = oacNoDomain}; 00117 enum {isMultiDomain = false}; 00118 enum {isConcrete = true}; 00119 enum {objectTypeEnumVal = oacSizedLayerType}; 00120 }; 00121 00122 00123 00124 END_OA_NAMESPACE 00125 00126 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.