oaTechDBTypes.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // oaTechDBTypes.h
00003 //
00004 // This file contains type definitions and declarations for this package.
00005 //
00006 // *****************************************************************************
00007 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00008 // Integration Initiative, this material may not be copied, modified,
00009 // re-published, uploaded, executed, or distributed in any way, in any medium,
00010 // in whole or in part, without prior written permission from Cadence.
00011 //
00012 //                Copyright 2002-2005 Cadence Design Systems, Inc.
00013 //                           All Rights Reserved.
00014 //
00015 //  $Author: icftcm $
00016 //  $Revision: #1 $
00017 //  $Date: 2010/08/09 $
00018 //  $State$
00019 // *****************************************************************************
00020 // *****************************************************************************
00021 
00022 
00023 
00024 #if !defined(oaTechDBTypes_P)
00025 #define oaTechDBTypes_P
00026 
00027 
00028 
00029 // *****************************************************************************
00030 // Nested includes
00031 // *****************************************************************************
00032 #include "oaString.h"
00033 
00034 
00035 
00036 // *****************************************************************************
00037 // Declare and define types in the OpenAccess namespace.
00038 // *****************************************************************************
00039 BEGIN_OA_NAMESPACE
00040 
00041 
00042 
00043 // *****************************************************************************
00044 // Windows DLL export macros
00045 // *****************************************************************************
00046 #if defined(OA_WINDOWS) && defined(OA_TECH_DLL_EXPORTS)
00047 #define OA_TECH_DLL_API __declspec(dllexport)
00048 #define OA_TECH_DLL_PVT __declspec(dllexport)
00049 #define OA_TECH_DLL_EXTERN
00050 #elif defined(OA_WINDOWS) && !defined(OA_STATIC)
00051 #define OA_TECH_DLL_API __declspec(dllimport)
00052 #define OA_TECH_DLL_PVT __declspec(dllimport)
00053 #define OA_TECH_DLL_EXTERN extern
00054 #else
00055 #define OA_TECH_DLL_API
00056 #define OA_TECH_DLL_PVT
00057 #endif
00058 
00059 
00060 
00061 // *****************************************************************************
00062 // Typedefs
00063 // *****************************************************************************
00064 typedef unsigned int oaLayerNum;
00065 typedef unsigned int oaPurposeNum;
00066 
00067 
00068 
00069 // *****************************************************************************
00070 // Constants
00071 // *****************************************************************************
00072 #define oacAnyLayerNum  oacNullIndex
00073 
00074 
00075 
00076 // *****************************************************************************
00077 // oaTechDataTypeEnum
00078 //
00079 // The first several entries are for the database itself and for data types with
00080 // a variable number of tables. These entries should not be included in the
00081 // number of data types. The entries between 0 and oavBaseNumDataTypes are
00082 // common to all databases and must match oaBaseDataTypeEnum. Note that the
00083 // dataID array for the dataTbls--oaTechData::techDataTblIDs--should match this
00084 // array.
00085 // *****************************************************************************
00086 #define oavNumTechDataTypes     33
00087 #define oavNumNewTechDataTypes  14
00088 
00089 enum oaTechDataTypeEnum {
00090     oacTechDataType                         = UINT_MAX,
00091     oacTechAppObjectDataType                = UINT_MAX - 1,
00092 
00093     oacTechPropDataType                     = 0,
00094     oacTechGroupDataType                    = 1,
00095     oacTechGroupMemDataType                 = 2,
00096     oacTechAvatarDataType                   = 3,
00097     oacTechValueDataType                    = 4,
00098     oacTechConstraintParamDefDataType       = 5,
00099     oacTechConstraintParamDataType          = 6,
00100     oacTechConstraintDefDataType            = 7,
00101     oacTechConstraintDataType               = 8,
00102     oacTechConstraintGroupDataType          = 9,
00103     oacTechConstraintGroupMemDataType       = 10,
00104     oacTechConstraintGroupHeaderDataType    = 11,
00105 
00106     oacLayerDataType                        = 12,
00107     oacPurposeDataType                      = 13,
00108     oacSiteDefDataType                      = 14,
00109     oacViaDefDataType                       = 15,
00110     oacOpPointDataType                      = 16,
00111     oacAnalysisLibDataType                  = 17,
00112     oacViaSpecDataType                      = 18,
00113     oacTechFeatureDataType                  = 19,
00114     oacTechFeaturePolicyDataType            = 20,
00115     oacTechHeaderDataType                   = 21,
00116     oacTechLayerHeaderDataType              = 22,
00117     oacTechViaDefHeaderDataType             = 23,
00118     oacTechDerivedLayerParamDefDataType     = 24,
00119     oacTechDerivedLayerParamDataType        = 25,
00120     oacTechDerivedLayerDefDataType          = 26,
00121     oacTechGroupDefDataType                 = 27,
00122     oacTechConstraintGroupDefDataType       = 28,
00123 
00124     oacTechParamDataType                    = 29,
00125     oacTechViaVariantDataType               = 30,
00126     oacTechViaVariantHeaderDataType         = 31,
00127 
00128     oacTechViaParamDataType                 = 32
00129 };
00130 
00131 
00132 
00133 // *****************************************************************************
00134 // oaTechDataType
00135 // *****************************************************************************
00136 class OA_TECH_DLL_API oaTechDataType {
00137 public:
00138                             oaTechDataType(oaTechDataTypeEnum valueIn);
00139                             oaTechDataType(const oaString &name);
00140                             ~oaTechDataType();
00141 
00142     const oaString          &getName() const;
00143 
00144                             operator                oaTechDataTypeEnum() const;
00145 
00146 private:
00147     static const oaString   *initNames();
00148 
00149     oaTechDataTypeEnum      value;
00150 
00151     static const oaString   names[];
00152     static const oaString   varNames[];
00153 };
00154 
00155 
00156 
00157 // *****************************************************************************
00158 // Forward Private Class Declarations
00159 // *****************************************************************************
00160 class oaTechData;
00161 class oaTechDataArray;
00162 class oaTechDataTbl;
00163 class oaNamedTechDataTbl;
00164 class oaTechConstraintGroupTbl;
00165 class oaTechConstraintTbl;
00166 class oaTechHashTbl;
00167 class oaLayerTbl;
00168 class oaPurposeTbl;
00169 class oaSiteDefTbl;
00170 class oaViaDefTbl;
00171 class oaViaSpecTbl;
00172 class oaViaVariantTbl;
00173 class oaViaVariantHeaderTbl;
00174 class oaTechViaVariantTbl;
00175 class oaOpPointTbl;
00176 class oaAnalysisLibTbl;
00177 class oaTechCacheTbl;
00178 class oaParamTbl;
00179 class oaViaParamTbl;
00180 class oaTechViaParamTbl;
00181 class oaTechParamTbl;
00182 class oaDerivedLayerDefTbl;
00183 class oaDerivedLayerParamDefTbl;
00184 class oaDerivedLayerParamTbl;
00185 class oaDerivedLayerCacheTbl;
00186 class oaSizedLayerHashTbl;
00187 class oaViaSpecHashTbl;
00188 class oaTechHeaderTbl;
00189 class oaTechLayerHeaderTbl;
00190 class oaTechConflictObserverMgr;
00191 class oaTechStdViaDefNameParamHashTbl;
00192 class oaTechCustomViaDefNameParamHashTbl;
00193 class oaTechUndoObserverPvt;
00194 
00195 
00196 
00197 // *****************************************************************************
00198 // Forward Public Class Declarations
00199 // *****************************************************************************
00200 class oaTech;
00201 class oaTechHeader;
00202 class oaTechLayerHeader;
00203 class oaTechViaDefHeader;
00204 class oaTechLibObserver;
00205 class oaLayer;
00206 class oaPhysicalLayer;
00207 class oaPurpose;
00208 class oaPurposeType;
00209 class oaSiteDef;
00210 class oaViaDef;
00211 class oaStdViaDef;
00212 class oaCustomViaDef;
00213 class oaViaSpec;
00214 class oaOpPoint;
00215 class oaAnalysisLib;
00216 class oaUserUnitsType;
00217 class oaRowHeader;
00218 class oaViaHeader;
00219 class oaViaParam;
00220 class oaDesign;
00221 class oaOpPointHeader;
00222 class oaBlock;
00223 class oaLayerConstraint;
00224 class oaLayerPairConstraint;
00225 class oaLayerArrayConstraint;
00226 class oaDerivedLayerDef;
00227 class oaDerivedLayerParamDef;
00228 class oaDerivedLayerParam;
00229 class oaViaVariant;
00230 class oaViaVariantHeader;
00231 class oaTechViaVariantHeader;
00232 
00233 
00234 
00235 // *****************************************************************************
00236 // Initialization Function Declaration
00237 // *****************************************************************************
00238 OA_TECH_DLL_API extern void
00239 oaTechInit(oaUInt4  apiMajorRev = oacAPIMajorRevNumber,
00240            oaUInt4  apiMinorRev = oacAPIMinorRevNumber);
00241 
00242 OA_TECH_DLL_API extern void
00243 oaTechInit(oaUInt4  apiMajorRev,
00244            oaUInt4  apiMinorRev,
00245            oaUInt4  dataModelRev);
00246 
00247 
00248 
00249 END_OA_NAMESPACE
00250 
00251 #endif

Return to top of page