oaTechValue.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaTechValue.h
00004 //
00005 // This file contains the definitions for the following classes:
00006 //      oaLayerValue
00007 //      oaLayerArrayValue
00008 //      oaPurposeValue
00009 //      oaViaDefArrayValue
00010 //      oaAntennaRatioValue
00011 //      oaAntennaRatioArrayValue
00012 //      oaViaTopologyArrayValue
00013 //      oaViaTopology2DTblValue
00014 //
00015 // *****************************************************************************
00016 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00017 // Integration Initiative, this material may not be copied, modified,
00018 // re-published, uploaded, executed, or distributed in any way, in any medium,
00019 // in whole or in part, without prior written permission from Cadence.
00020 //
00021 //                Copyright 2002-2005 Cadence Design Systems, Inc.
00022 //                           All Rights Reserved.
00023 //
00024 //  $Author: icftcm $
00025 //  $Revision: #1 $
00026 //  $Date: 2010/08/09 $
00027 //  $State: Exp $
00028 // *****************************************************************************
00029 // *****************************************************************************
00030 
00031 
00032 
00033 #if !defined(oaTechValue_P)
00034 #define oaTechValue_P
00035 
00036 
00037 
00038 // *****************************************************************************
00039 // Nested includes
00040 // *****************************************************************************
00041 #include "oaViaDefArray.h"
00042 #include "oaViaTopology.h"
00043 
00044 
00045 
00046 // *****************************************************************************
00047 // Declare and define types in the OpenAccess namespace.
00048 // *****************************************************************************
00049 BEGIN_OA_NAMESPACE
00050 
00051 
00052 
00053 // *****************************************************************************
00054 // oaViaDefNameArray
00055 // *****************************************************************************
00056 class OA_TECH_DLL_API oaViaDefNameArray : public oaArray<oaString> {
00057 public:
00058                             oaViaDefNameArray(oaUInt4 sizeIn = 0);
00059 };
00060 
00061 
00062 
00063 // *****************************************************************************
00064 // oaLayerValue
00065 // *****************************************************************************
00066 class OA_TECH_DLL_API oaLayerValue : public oaValue {
00067 public:
00068     static oaLayerValue     *create(oaObject    *database,
00069                                     oaLayerNum  value);
00070 
00071     oaLayerNum              get() const;
00072     void                    set(oaLayerNum value);
00073 };
00074 
00075 
00076 
00077 // *****************************************************************************
00078 // oaLayerArrayValue
00079 // *****************************************************************************
00080 class OA_TECH_DLL_API oaLayerArrayValue : public oaValue {
00081 public:
00082     static oaLayerArrayValue    *create(oaObject            *database,
00083                                         const oaLayerArray  &value);
00084 #if !defined(OA_DEPRECATED)
00085     static oaLayerArrayValue    *create(oaObject        *database,
00086                                         oaLayerArray    &value);
00087 #endif
00088 
00089     void                        get(oaLayerArray &value) const;
00090     void                        set(const oaLayerArray &value);
00091 };
00092 
00093 
00094 
00095 // *****************************************************************************
00096 // oaPurposeValue
00097 // *****************************************************************************
00098 class OA_TECH_DLL_API oaPurposeValue : public oaValue {
00099 public:
00100     static oaPurposeValue   *create(oaObject        *database,
00101                                     oaPurposeNum    value);
00102 
00103     oaPurposeNum            get() const;
00104     void                    set(oaPurposeNum value);
00105 };
00106 
00107 
00108 
00109 // *****************************************************************************
00110 // oaViaDefArrayValue
00111 // *****************************************************************************
00112 class OA_TECH_DLL_API oaViaDefArrayValue : public oaValue {
00113 public:
00114     static oaViaDefArrayValue   *create(oaObject            *database,
00115                                         const oaViaDefArray &value);
00116 #if !defined(OA_DEPRECATED)
00117     static oaViaDefArrayValue   *create(oaObject        *database,
00118                                         oaViaDefArray   &value);
00119 #endif
00120 
00121     void                        get(oaViaDefArray &value) const;
00122     void                        getNames(oaViaDefNameArray &names) const;
00123     void                        set(const oaViaDefArray &value);
00124 };
00125 
00126 
00127 
00128 // *****************************************************************************
00129 // oaAntennaRatioValue
00130 // *****************************************************************************
00131 class OA_TECH_DLL_API oaAntennaRatioValue : public oaValue {
00132 public:
00133     static oaAntennaRatioValue  *create(oaObject                                *database,
00134                                         oaBoolean                               isSide,
00135                                         oaFloat                                 gateRatio,
00136                                         const oa1DLookupTbl<oaInt8, oaFloat>    &diodeRatio);
00137 
00138     oaBoolean                   isSide() const;
00139     oaFloat                     getGate() const;
00140     void                        getDiode(oa1DLookupTbl<oaInt8, oaFloat> &ratio) const;
00141 
00142     void                        setSide(oaBoolean isSide);
00143     void                        setGate(oaFloat ratio);
00144     void                        setDiode(const oa1DLookupTbl<oaInt8, oaFloat> &ratio);
00145 };
00146 
00147 
00148 
00149 // *****************************************************************************
00150 // oaAntennaRatioArrayValue
00151 // *****************************************************************************
00152 class OA_TECH_DLL_API oaAntennaRatioArrayValue : public oaValue {
00153 public:
00154     static oaAntennaRatioArrayValue *create(oaObject            *database,
00155                                             oaAntennaRatioValue *defaultModel,
00156                                             oaAntennaRatioValue *secondModel = NULL,
00157                                             oaAntennaRatioValue *thirdModel = NULL,
00158                                             oaAntennaRatioValue *fourthModel = NULL);
00159 
00160     oaAntennaRatioValue             *get(const oaAntennaModel &model) const;
00161     void                            set(const oaAntennaModel    &model,
00162                                         oaAntennaRatioValue     *value);
00163 };
00164 
00165 
00166 
00167 // *****************************************************************************
00168 // oaViaDef2DTblValue
00169 // *****************************************************************************
00170 class OA_TECH_DLL_API oaViaDef2DTblValue : public oaValue {
00171 public:
00172     static oaViaDef2DTblValue   *create(oaObject                                                    *database,
00173                                         const oa2DLookupTbl<oaInt4, oaInt4, oaViaDefArrayValue*>    &value);
00174 
00175     void                        get(oa2DLookupTbl<oaInt4, oaInt4, oaViaDefArrayValue*> &value) const;
00176 
00177     void                        set(const oa2DLookupTbl<oaInt4, oaInt4, oaViaDefArrayValue*> &value);
00178 };
00179 
00180 
00181 
00182 // *****************************************************************************
00183 // oaViaTopologyArrayValue
00184 // *****************************************************************************
00185 class OA_TECH_DLL_API oaViaTopologyArrayValue : public oaValue {
00186 public:
00187     static oaViaTopologyArrayValue  *create(oaObject                    *database,
00188                                             const oaViaTopologyArray    &value);
00189 
00190     void                            get(oaViaTopologyArray &value) const;
00191     void                            set(const oaViaTopologyArray &value);
00192 };
00193 
00194 
00195 
00196 // *****************************************************************************
00197 // oaViaTopology2DTblValue
00198 // *****************************************************************************
00199 class OA_TECH_DLL_API oaViaTopology2DTblValue : public oaValue {
00200 public:
00201     static oaViaTopology2DTblValue  *create(oaObject                                                        *database,
00202                                             const oa2DLookupTbl<oaInt4, oaInt4, oaViaTopologyArrayValue*>   &value);
00203 
00204     void                            get(oa2DLookupTbl<oaInt4, oaInt4, oaViaTopologyArrayValue*> &value) const;
00205 
00206     void                            set(const oa2DLookupTbl<oaInt4, oaInt4, oaViaTopologyArrayValue*> &value);
00207 };
00208 
00209 
00210 
00211 // *****************************************************************************
00212 // Tech objects derived from oaValue
00213 // *****************************************************************************
00214 template<>
00215 class oaTraits<oaLayerValue> {
00216 public:
00217     typedef oaValueModTypeEnum  modTypeType;
00218     typedef oaValue             parentType;
00219     enum {domain = oacNoDomain};
00220     enum {isMultiDomain = false};
00221     enum {dbType = oacBaseDBType};
00222     enum {dtIndex = oacTechValueDataType};
00223     enum {isConcrete = true};
00224     enum {objectTypeEnumVal = oacLayerValueType};
00225     enum {dataTypeEnumVal = oacTechValueDataType};
00226 };
00227 
00228 template<>
00229 class oaTraits<oaLayerArrayValue> {
00230 public:
00231     typedef oaValueModTypeEnum  modTypeType;
00232     typedef oaValue             parentType;
00233     enum {domain = oacNoDomain};
00234     enum {isMultiDomain = false};
00235     enum {dbType = oacBaseDBType};
00236     enum {dtIndex = oacTechValueDataType};
00237     enum {isConcrete = true};
00238     enum {objectTypeEnumVal = oacLayerArrayValueType};
00239     enum {dataTypeEnumVal = oacTechValueDataType};
00240 };
00241 
00242 template<>
00243 class oaTraits<oaViaDefArrayValue> {
00244 public:
00245     typedef oaValueModTypeEnum  modTypeType;
00246     typedef oaValue             parentType;
00247     enum {domain = oacNoDomain};
00248     enum {isMultiDomain = false};
00249     enum {dbType = oacBaseDBType};
00250     enum {dtIndex = oacTechValueDataType};
00251     enum {isConcrete = true};
00252     enum {objectTypeEnumVal = oacViaDefArrayValueType};
00253     enum {dataTypeEnumVal = oacTechValueDataType};
00254 };
00255 
00256 template<>
00257 class oaTraits<oaAntennaRatioValue> {
00258 public:
00259     typedef oaValueModTypeEnum  modTypeType;
00260     typedef oaValue             parentType;
00261     enum {domain = oacNoDomain};
00262     enum {isMultiDomain = false};
00263     enum {dbType = oacBaseDBType};
00264     enum {dtIndex = oacTechValueDataType};
00265     enum {isConcrete = true};
00266     enum {objectTypeEnumVal = oacAntennaRatioValueType};
00267     enum {dataTypeEnumVal = oacTechValueDataType};
00268 };
00269 
00270 template<>
00271 class oaTraits<oaAntennaRatioArrayValue> {
00272 public:
00273     typedef oaValueModTypeEnum  modTypeType;
00274     typedef oaValue             parentType;
00275     enum {domain = oacNoDomain};
00276     enum {isMultiDomain = false};
00277     enum {dbType = oacBaseDBType};
00278     enum {dtIndex = oacTechValueDataType};
00279     enum {isConcrete = true};
00280     enum {objectTypeEnumVal = oacAntennaRatioArrayValueType};
00281     enum {dataTypeEnumVal = oacTechValueDataType};
00282 };
00283 
00284 template<>
00285 class oaTraits<oaViaDef2DTblValue> {
00286 public:
00287     typedef oaValueModTypeEnum  modTypeType;
00288     typedef oaValue             parentType;
00289     enum {domain = oacNoDomain};
00290     enum {isMultiDomain = false};
00291     enum {dbType = oacBaseDBType};
00292     enum {dtIndex = oacTechValueDataType};
00293     enum {isConcrete = true};
00294     enum {objectTypeEnumVal = oacViaDef2DTblValueType};
00295     enum {dataTypeEnumVal = oacTechValueDataType};
00296 };
00297 
00298 template<>
00299 class oaTraits<oaPurposeValue> {
00300 public:
00301     typedef oaValueModTypeEnum  modTypeType;
00302     typedef oaValue             parentType;
00303     enum {domain = oacNoDomain};
00304     enum {isMultiDomain = false};
00305     enum {dbType = oacBaseDBType};
00306     enum {dtIndex = oacTechValueDataType};
00307     enum {isConcrete = true};
00308     enum {objectTypeEnumVal = oacPurposeValueType};
00309     enum {dataTypeEnumVal = oacTechValueDataType};
00310 };
00311 
00312 template<>
00313 class oaTraits<oaViaTopologyArrayValue> {
00314 public:
00315     typedef oaValueModTypeEnum  modTypeType;
00316     typedef oaValue             parentType;
00317     enum {domain = oacNoDomain};
00318     enum {isMultiDomain = false};
00319     enum {dbType = oacBaseDBType};
00320     enum {dtIndex = oacTechValueDataType};
00321     enum {isConcrete = true};
00322     enum {objectTypeEnumVal = oacViaTopologyArrayValueType};
00323     enum {dataTypeEnumVal = oacTechValueDataType};
00324 };
00325 
00326 template<>
00327 class oaTraits<oaViaTopology2DTblValue> {
00328 public:
00329     typedef oaValueModTypeEnum  modTypeType;
00330     typedef oaValue             parentType;
00331     enum {domain = oacNoDomain};
00332     enum {isMultiDomain = false};
00333     enum {dbType = oacBaseDBType};
00334     enum {dtIndex = oacTechValueDataType};
00335     enum {isConcrete = true};
00336     enum {objectTypeEnumVal = oacViaTopology2DTblValueType};
00337     enum {dataTypeEnumVal = oacTechValueDataType};
00338 };
00339 
00340 
00341 
00342 END_OA_NAMESPACE
00343 
00344 #endif

Return to top of page