00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaType.h 00004 // 00005 // This file contains the definition for the oaType class. It implements a class 00006 // that represents the type of all database objects. 00007 // 00008 // ***************************************************************************** 00009 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00010 // Integration Initiative, this material may not be copied, modified, 00011 // re-published, uploaded, executed, or distributed in any way, in any medium, 00012 // in whole or in part, without prior written permission from Cadence. 00013 // 00014 // Copyright 2003-2007 Cadence Design Systems, Inc. 00015 // All Rights Reserved. 00016 // 00017 // $Author: icftcm $ 00018 // $Revision: #1 $ 00019 // $Date: 2010/08/09 $ 00020 // $State: Exp $ 00021 // ***************************************************************************** 00022 // ***************************************************************************** 00023 00024 00025 00026 #if !defined(oaType_P) 00027 #define oaType_P 00028 00029 00030 00031 // ***************************************************************************** 00032 // Nested includes 00033 // ***************************************************************************** 00034 #include "oaString.h" 00035 00036 00037 00038 // ***************************************************************************** 00039 // Declare and define types in the OpenAccess namespace. 00040 // ***************************************************************************** 00041 BEGIN_OA_NAMESPACE 00042 00043 00044 00045 // ***************************************************************************** 00046 // Forward Public Class Declarations 00047 // ***************************************************************************** 00048 class oaString; 00049 00050 00051 00052 // ***************************************************************************** 00053 // oaTypeEnum Note! Increase oavNumObjectTypes when adding a new type. 00054 // ***************************************************************************** 00055 #define oavNumObjectTypes 287 00056 00057 enum oaTypeEnum { 00058 oacUnknownType = 0, 00059 oacSessionType = 1, 00060 oacLibType = 2, 00061 oacTechType = 3, 00062 oacDesignType = 4, 00063 oacWaferType = 5, 00064 00065 oacBlockType = 6, 00066 oacModuleType = 7, 00067 oacOccurrenceType = 8, 00068 00069 oacLPPHeaderType = 9, 00070 oacLayerHeaderType = 10, 00071 oacArcType = 11, 00072 oacDonutType = 12, 00073 oacDotType = 13, 00074 oacEllipseType = 14, 00075 oacLineType = 15, 00076 oacPathType = 16, 00077 oacPathSegType = 17, 00078 oacPolygonType = 18, 00079 oacRectType = 19, 00080 oacTextType = 20, 00081 oacEvalTextType = 21, 00082 oacPropDisplayType = 22, 00083 oacAttrDisplayType = 23, 00084 oacTextOverrideType = 24, 00085 oacInstPropDisplayType = 25, 00086 oacInstAttrDisplayType = 26, 00087 oacRouteType = 27, 00088 oacMarkerType = 28, 00089 oacTrackPatternType = 29, 00090 oacRowType = 30, 00091 oacRowHeaderType = 31, 00092 oacPinType = 32, 00093 oacClusterType = 33, 00094 oacAreaBoundaryType = 34, 00095 oacPRBoundaryType = 35, 00096 oacSnapBoundaryType = 36, 00097 oacClusterBoundaryType = 37, 00098 oacAreaBlockageType = 38, 00099 oacAreaHaloType = 39, 00100 oacLayerBlockageType = 40, 00101 oacLayerHaloType = 41, 00102 oacSteinerType = 42, 00103 oacStdViaType = 43, 00104 oacCustomViaType = 44, 00105 oacStdViaHeaderType = 45, 00106 oacCustomViaHeaderType = 46, 00107 oacGCellPatternType = 47, 00108 oacCMapType = 48, 00109 oacArrayInstType = 49, 00110 00111 oacScalarInstType = 50, 00112 oacVectorInstType = 51, 00113 oacVectorInstBitType = 52, 00114 oacVectorInstDefType = 53, 00115 oacBundleNetType = 54, 00116 oacBusNetType = 55, 00117 oacBusNetBitType = 56, 00118 oacScalarNetType = 57, 00119 oacBusNetDefType = 58, 00120 oacBundleTermType = 59, 00121 oacBusTermType = 60, 00122 oacBusTermBitType = 61, 00123 oacScalarTermType = 62, 00124 oacBusTermDefType = 63, 00125 oacInstTermType = 64, 00126 oacNetConnectDefType = 65, 00127 oacTermConnectDefType = 66, 00128 oacAssignValueType = 67, 00129 oacAssignAssignmentType = 68, 00130 oacScanChainType = 69, 00131 oacScanChainInstType = 70, 00132 oacScanChainSetType = 71, 00133 oacInstHeaderType = 72, 00134 00135 oacOccScalarInstType = 73, 00136 oacOccVectorInstType = 74, 00137 oacOccVectorInstBitType = 75, 00138 oacOccVectorInstDefType = 76, 00139 oacOccBundleNetType = 77, 00140 oacOccBusNetType = 78, 00141 oacOccBusNetBitType = 79, 00142 oacOccScalarNetType = 80, 00143 oacOccBusNetDefType = 81, 00144 oacOccBundleTermType = 82, 00145 oacOccBusTermType = 83, 00146 oacOccBusTermBitType = 84, 00147 oacOccScalarTermType = 85, 00148 oacOccBusTermDefType = 86, 00149 oacOccInstTermType = 87, 00150 oacOccNetConnectDefType = 88, 00151 oacOccTermConnectDefType = 89, 00152 oacOccAssignValueType = 90, 00153 oacOccAssignAssignmentType = 91, 00154 oacObsoleteType92 = 92, 00155 oacObsoleteType93 = 93, 00156 oacObsoleteType94 = 94, 00157 oacOccInstHeaderType = 95, 00158 00159 oacModScalarInstType = 96, 00160 oacModVectorInstType = 97, 00161 oacModVectorInstBitType = 98, 00162 oacModVectorInstDefType = 99, 00163 oacModBundleNetType = 100, 00164 oacModBusNetType = 101, 00165 oacModBusNetBitType = 102, 00166 oacModScalarNetType = 103, 00167 oacModBusNetDefType = 104, 00168 oacModBundleTermType = 105, 00169 oacModBusTermType = 106, 00170 oacModBusTermBitType = 107, 00171 oacModScalarTermType = 108, 00172 oacModBusTermDefType = 109, 00173 oacModInstTermType = 110, 00174 oacModNetConnectDefType = 111, 00175 oacModTermConnectDefType = 112, 00176 oacModAssignValueType = 113, 00177 oacModAssignAssignmentType = 114, 00178 oacObsoleteType115 = 115, 00179 oacObsoleteType116 = 116, 00180 oacObsoleteType117 = 117, 00181 oacModInstHeaderType = 118, 00182 00183 oacModModuleScalarInstType = 119, 00184 oacModModuleVectorInstType = 120, 00185 oacModModuleVectorInstBitType = 121, 00186 00187 oacOccArrayInstType = 122, 00188 oacOccModuleScalarInstType = 123, 00189 oacOccModuleVectorInstType = 124, 00190 oacOccModuleVectorInstBitType = 125, 00191 00192 oacOccModuleInstHeaderType = 126, 00193 oacModModuleInstHeaderType = 127, 00194 00195 oacAnalysisPointType = 128, 00196 oacAnalysisOpPointType = 129, 00197 oacOpPointHeaderType = 130, 00198 oacReducedDriverType = 131, 00199 oacParasiticNetworkType = 132, 00200 oacSubNetworkType = 133, 00201 oacSubNetworkMemType = 134, 00202 oacResistorType = 135, 00203 oacCouplingCapType = 136, 00204 oacInductorType = 137, 00205 oacDiodeType = 138, 00206 oacSeriesRLType = 139, 00207 oacMutualInductorType = 140, 00208 oacExternalDeviceType = 141, 00209 oacNodeType = 142, 00210 oacGroundedNodeType = 143, 00211 oacGuideType = 144, 00212 oacLumpedElmoreType = 145, 00213 oacPiElmoreType = 146, 00214 oacPiPoleResidueType = 147, 00215 oacElmoreType = 148, 00216 oacPoleResidueType = 149, 00217 00218 oacOccArcType = 150, 00219 oacOccDonutType = 151, 00220 oacOccDotType = 152, 00221 oacOccEllipseType = 153, 00222 oacOccLineType = 154, 00223 oacOccPathType = 155, 00224 oacOccPathSegType = 156, 00225 oacOccPolygonType = 157, 00226 oacOccRectType = 158, 00227 oacOccTextType = 159, 00228 oacOccEvalTextType = 160, 00229 oacOccPropDisplayType = 161, 00230 oacOccAttrDisplayType = 162, 00231 oacOccTextOverrideType = 163, 00232 oacOccInstPropDisplayType = 164, 00233 oacOccInstAttrDisplayType = 165, 00234 00235 oacIntPropType = 166, 00236 oacIntRangePropType = 167, 00237 oacFloatPropType = 168, 00238 oacFloatRangePropType = 169, 00239 oacStringPropType = 170, 00240 oacAppPropType = 171, 00241 oacDoublePropType = 172, 00242 oacDoubleRangePropType = 173, 00243 oacBooleanPropType = 174, 00244 oacHierPropType = 175, 00245 oacTimePropType = 176, 00246 oacTimeRangePropType = 177, 00247 oacEnumPropType = 178, 00248 00249 oacGroupType = 179, 00250 oacGroupMemberType = 180, 00251 00252 oacPhysicalLayerType = 181, 00253 oacDerivedLayerType = 182, 00254 oacSizedLayerType = 183, 00255 oacPurposeType = 184, 00256 oacScalarSiteDefType = 185, 00257 oacArraySiteDefType = 186, 00258 oacViaSpecType = 187, 00259 oacStdViaDefType = 188, 00260 oacCustomViaDefType = 189, 00261 oacOpPointType = 190, 00262 oacAnalysisLibType = 191, 00263 00264 oacAppObjectType = 192, 00265 00266 oacCellType = 193, 00267 oacViewType = 194, 00268 oacCellViewType = 195, 00269 oacDMFileType = 196, 00270 00271 oacWaferDescType = 197, 00272 oacFrameType = 198, 00273 oacReticleType = 199, 00274 oacReticleRefType = 200, 00275 oacWaferFeatureType = 201, 00276 oacStepperMapType = 202, 00277 oacImageType = 203, 00278 oacFrameInstType = 204, 00279 oacDesignInstType = 205, 00280 00281 oacViewTypeType = 206, 00282 00283 oacConstraintParamDefType = 207, 00284 oacConstraintParamType = 208, 00285 00286 oacSimpleConstraintDefType = 209, 00287 oacLayerConstraintDefType = 210, 00288 oacLayerPairConstraintDefType = 211, 00289 00290 oacSimpleConstraintType = 212, 00291 oacLayerConstraintType = 213, 00292 oacLayerPairConstraintType = 214, 00293 00294 oacConstraintGroupType = 215, 00295 oacConstraintGroupMemType = 216, 00296 oacConstraintGroupHeaderType = 217, 00297 00298 oacBooleanValueType = 218, 00299 oacIntValueType = 219, 00300 oacFltValueType = 220, 00301 oacLayerArrayValueType = 221, 00302 oacInt1DTblValueType = 222, 00303 oacFlt1DTblValueType = 223, 00304 oacInt2DTblValueType = 224, 00305 oacFlt2DTblValueType = 225, 00306 oacIntFltTblValueType = 226, 00307 oacFltIntFltTblValueType = 227, 00308 oacDualIntValueType = 228, 00309 oacDualInt1DTblValueType = 229, 00310 oacBoxArrayValueType = 230, 00311 oacValueArrayValueType = 231, 00312 oacViaDefArrayValueType = 232, 00313 oacLayerValueType = 233, 00314 oacAntennaRatioValueType = 234, 00315 oacAntennaRatioArrayValueType = 235, 00316 oacViaDef2DTblValueType = 236, 00317 00318 oacIntAppDefType = 237, 00319 oacFloatAppDefType = 238, 00320 oacStringAppDefType = 239, 00321 oacIntraPointerAppDefType = 240, 00322 oacInterPointerAppDefType = 241, 00323 oacDataAppDefType = 242, 00324 oacVarDataAppDefType = 243, 00325 oacTimeAppDefType = 244, 00326 oacDoubleAppDefType = 245, 00327 oacVoidPointerAppDefType = 246, 00328 oacBooleanAppDefType = 247, 00329 oacAppObjectDefType = 248, 00330 00331 oacLibDefListType = 249, 00332 oacLibDefType = 250, 00333 oacLibDefListRefType = 251, 00334 00335 oacLibDMDataType = 252, 00336 oacCellDMDataType = 253, 00337 oacViewDMDataType = 254, 00338 oacCellViewDMDataType = 255, 00339 00340 oacFeatureType = 256, 00341 00342 oacFigGroupType = 257, 00343 oacFigGroupMemType = 258, 00344 00345 oacTechHeaderType = 259, 00346 oacTechLayerHeaderType = 260, 00347 oacTechViaDefHeaderType = 261, 00348 00349 oacLayerArrayConstraintDefType = 262, 00350 oacLayerArrayConstraintType = 263, 00351 00352 oacUInt8ValueType = 264, 00353 oacIntDualIntArrayTblValueType = 265, 00354 oacIntRangeValueType = 266, 00355 oacUInt8RangeValueType = 267, 00356 00357 oacDerivedLayerParamDefType = 268, 00358 oacDerivedLayerParamType = 269, 00359 oacDerivedLayerDefType = 270, 00360 00361 oacPurposeValueType = 271, 00362 00363 oacConstraintGroupDefType = 272, 00364 00365 oacStdViaVariantType = 273, 00366 oacCustomViaVariantType = 274, 00367 00368 oacTechViaVariantHeaderType = 275, 00369 oacDesignViaVariantHeaderType = 276, 00370 00371 oacViaTopologyArrayValueType = 277, 00372 oacViaTopology2DTblValueType = 278, 00373 oacStringValueType = 279, 00374 00375 oacLayerRangeBlockageType = 280, 00376 oacLayerRangeHaloType = 281, 00377 oacIntRangeArrayValueType = 282, 00378 oacIntRangeArray1DTblValueType = 283, 00379 oacIntRangeArray2DTblValueType = 284, 00380 00381 oacFlatGroupDefType = 285, 00382 oacHierGroupDefType = 286 00383 }; 00384 00385 00386 00387 // ***************************************************************************** 00388 // oaAbstractTypeEnum 00389 // Note! Increase oavNumObjectAbstractTypes when adding a new abstract type. 00390 // ***************************************************************************** 00391 #define oavAbstractTypeMask 0x80000000 00392 #define oavNumObjectAbstractTypes 72 00393 00394 enum oaAbstractTypeEnum { 00395 oacDesignObjectType = 0, 00396 oacDeviceType = 1, 00397 oacReducedModelType = 2, 00398 oacBlockObjectType = 3, 00399 oacAssignmentType = 4, 00400 oacConnectDefType = 5, 00401 oacFigType = 6, 00402 oacNetType = 7, 00403 oacOccShapeType = 8, 00404 oacRefHeaderType = 9, 00405 oacTermType = 10, 00406 oacStdDeviceType = 11, 00407 oacBlockageType = 12, 00408 oacBoundaryType = 13, 00409 oacConnFigType = 14, 00410 oacBitNetType = 15, 00411 oacOccTextDisplayType = 16, 00412 oacViaHeaderType = 17, 00413 oacBitTermType = 18, 00414 oacPinFigType = 19, 00415 oacRefType = 20, 00416 oacShapeType = 21, 00417 oacTextDisplayType = 22, 00418 oacInstType = 23, 00419 oacBitInstType = 24, 00420 oacViaType = 25, 00421 oacModObjectType = 26, 00422 oacModAssignmentType = 27, 00423 oacModConnectDefType = 28, 00424 oacModTermType = 29, 00425 oacModInstType = 30, 00426 oacModDesignInstType = 31, 00427 oacModModuleInstType = 32, 00428 oacModBitInstType = 33, 00429 oacModModuleBitInstType = 34, 00430 oacModNetType = 35, 00431 oacModBitNetType = 36, 00432 oacModBitTermType = 37, 00433 oacOccObjectType = 38, 00434 oacOccInstType = 39, 00435 oacOccNetType = 40, 00436 oacOccBitNetType = 41, 00437 oacOccTermType = 42, 00438 oacOccBitTermType = 43, 00439 oacOccAssignmentType = 44, 00440 oacOccConnectDefType = 45, 00441 oacOccDesignInstType = 46, 00442 oacOccModuleInstType = 47, 00443 oacOccBitInstType = 48, 00444 oacOccModuleBitInstType = 49, 00445 oacObjectType = 50, 00446 oacConstraintType = 51, 00447 oacPropType = 52, 00448 oacSessionObjectType = 53, 00449 oacValueType = 54, 00450 oacAppDefType = 55, 00451 oacConstraintDefType = 56, 00452 oacDMDataType = 57, 00453 oacDMObjectType = 58, 00454 oacDMContainerType = 59, 00455 oacLibDefListMemType = 60, 00456 oacTechObjectType = 61, 00457 oacLayerType = 62, 00458 oacSiteDefType = 63, 00459 oacViaDefType = 64, 00460 oacWaferObjectType = 65, 00461 00462 oacAbstractTextType = 66, 00463 oacAbstractNodeType = 67, 00464 oacAbstractOccTextType = 68, 00465 00466 oacViaVariantType = 69, 00467 oacViaVariantHeaderType = 70, 00468 00469 oacGroupDefType = 71 00470 }; 00471 00472 00473 00474 // ***************************************************************************** 00475 // oaDBTypeEnum 00476 // 00477 // The second entry is a special DBType that is used for objects that are not 00478 // specific to any database type. 00479 // 00480 // Note: The number of types should not include the special database type. 00481 // ***************************************************************************** 00482 #define oavNumDBTypes 6 00483 00484 enum oaDBTypeEnum { 00485 oacFutureDBType = UINT_MAX - 1, 00486 oacBaseDBType = UINT_MAX, 00487 oacDesignDBType = 0, 00488 oacTechDBType = 1, 00489 oacLibDBType = 2, 00490 oacWaferDBType = 3, 00491 oacSessionDBType = 4, 00492 oacDMDataDBType = 5 00493 }; 00494 00495 00496 00497 // ***************************************************************************** 00498 // oaCategoryTypeEnum 00499 // ***************************************************************************** 00500 #define oavNumCategories 18 00501 00502 enum oaCategoryEnum { 00503 oacFutureCategory = 0, 00504 oacConstraintCategory = 1, 00505 oacValueCategory = 2, 00506 oacAnnotationCategory = 3, 00507 oacApplicationDefinedCategory = 4, 00508 oacNameCategory = 5, 00509 oacObserverCategory = 6, 00510 oacDesignManagementCategory = 7, 00511 oacTechCategory = 8, 00512 oacWaferCategory = 9, 00513 oacDesignHierarchyCategory = 10, 00514 oacGeometryCategory = 11, 00515 oacPlaceAndRouteCategory = 12, 00516 oacConnectivityCategory = 13, 00517 oacParasiticsCategory = 14, 00518 oacPlugInCategory = 15, 00519 oacGroupManagementCategory = 16, 00520 oacViaVariantCategory = 17 00521 }; 00522 00523 00524 00525 // ***************************************************************************** 00526 // oaDataModelModTypeEnum 00527 // ***************************************************************************** 00528 #define oavNumDataModelModTypes 4 00529 00530 enum oaDataModelModTypeEnum { 00531 oacFutureDataModelModType = 0, 00532 oacAdditionDataModelModType = 1, 00533 oacRemovalDataModelModType = 2, 00534 oacChangeDataModelModType = 3 00535 }; 00536 00537 00538 00539 // ***************************************************************************** 00540 // oaType 00541 // ***************************************************************************** 00542 class OA_BASE_DLL_API oaType { 00543 public: 00544 oaType(); 00545 oaType(oaTypeEnum valueIn); 00546 oaType(const oaString &name); 00547 ~oaType(); 00548 00549 const oaString &getName() const; 00550 operator oaTypeEnum() const; 00551 00552 private: 00553 static const oaString *initNames(); 00554 00555 oaTypeEnum value; 00556 00557 static const oaString names[]; 00558 }; 00559 00560 00561 00562 // ***************************************************************************** 00563 // oaDBType 00564 // ***************************************************************************** 00565 class OA_BASE_DLL_API oaDBType { 00566 public: 00567 oaDBType(); 00568 oaDBType(oaDBTypeEnum typeIn); 00569 oaDBType(const oaString &name); 00570 ~oaDBType(); 00571 00572 const oaString &getName() const; 00573 operator oaDBTypeEnum() const; 00574 00575 private: 00576 static const oaString *initVarNames(); 00577 00578 oaDBTypeEnum value; 00579 00580 static const oaString names[]; 00581 static const oaString *varNames; 00582 }; 00583 00584 00585 00586 // ***************************************************************************** 00587 // oaCatagory 00588 // ***************************************************************************** 00589 class OA_BASE_DLL_API oaCategory { 00590 public: 00591 oaCategory(); 00592 oaCategory(oaCategoryEnum typeIn); 00593 oaCategory(const oaString &name); 00594 ~oaCategory(); 00595 00596 const oaString &getName() const; 00597 operator oaCategoryEnum() const; 00598 00599 private: 00600 static const oaString *initNames(); 00601 00602 oaCategoryEnum value; 00603 00604 static const oaString *names; 00605 }; 00606 00607 00608 00609 // ***************************************************************************** 00610 // oaDataModelModType 00611 // ***************************************************************************** 00612 class OA_BASE_DLL_API oaDataModelModType { 00613 public: 00614 oaDataModelModType(); 00615 oaDataModelModType(oaDataModelModTypeEnum typeIn); 00616 oaDataModelModType(const oaString &name); 00617 ~oaDataModelModType(); 00618 00619 const oaString &getName() const; 00620 operator oaDataModelModTypeEnum() const; 00621 00622 private: 00623 static const oaString *initNames(); 00624 00625 oaDataModelModTypeEnum value; 00626 00627 static const oaString *names; 00628 }; 00629 00630 00631 00632 // ***************************************************************************** 00633 // oaAbstractType 00634 // ***************************************************************************** 00635 class OA_BASE_DLL_API oaAbstractType { 00636 public: 00637 oaAbstractType(); 00638 oaAbstractType(oaAbstractTypeEnum valueIn); 00639 oaAbstractType(const oaString &name); 00640 ~oaAbstractType(); 00641 00642 const oaString &getName() const; 00643 operator oaAbstractTypeEnum() const; 00644 00645 private: 00646 static const oaString *initNames(); 00647 00648 oaAbstractTypeEnum value; 00649 }; 00650 00651 00652 00653 // ***************************************************************************** 00654 // oaManagedType 00655 // ***************************************************************************** 00656 class OA_BASE_DLL_API oaManagedType { 00657 public: 00658 oaManagedType(); 00659 oaManagedType(oaTypeEnum valueIn); 00660 oaManagedType(oaAbstractTypeEnum valueIn); 00661 oaManagedType(const oaString &name); 00662 ~oaManagedType(); 00663 00664 const oaString &getName() const; 00665 oaBoolean isConcrete() const; 00666 oaAbstractType getAbstractType() const; 00667 oaType getConcreteType() const; 00668 00669 oaBoolean isValid(oaType testType) const; 00670 00671 oaBoolean operator>(const oaManagedType &rhs) const; 00672 oaBoolean operator==(const oaManagedType &rhs) const; 00673 oaBoolean operator!=(const oaManagedType &rhs) const; 00674 00675 private: 00676 oaUInt4 value; 00677 }; 00678 00679 00680 00681 END_OA_NAMESPACE 00682 00683 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.