oaViaVariant.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaViaVariant.h
00004 //
00005 // This file contains the definitions of the oaViaVariant class and its public
00006 // supporting classes. These classes include:
00007 //
00008 //  oaViaVariant
00009 //      This class is an abstract base for all types of viaVariants.
00010 //
00011 //  oaStdViaVariant
00012 //      This class implements a standard via variant. 
00013 //
00014 //  oaCustomViaVariant
00015 //      This class implements a custom via variant. 
00016 //
00017 // *****************************************************************************
00018 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00019 // Integration Initiative, this material may not be copied, modified,
00020 // re-published, uploaded, executed, or distributed in any way, in any medium,
00021 // in whole or in part, without prior written permission from Cadence.
00022 //
00023 //                Copyright 2002-2005 Cadence Design Systems, Inc.
00024 //                           All Rights Reserved.
00025 //
00026 //  $Author: icftcm $
00027 //  $Revision: #1 $
00028 //  $Date: 2010/08/09 $
00029 //  $State:  $
00030 // *****************************************************************************
00031 // *****************************************************************************
00032 
00033 
00034 
00035 #if !defined(oaViaVariant_P)
00036 #define oaViaVariant_P
00037 
00038 
00039 
00040 // *****************************************************************************
00041 // Nested includes
00042 // *****************************************************************************
00043 #include "oaParam.h"
00044 #include "oaViaDef.h"
00045 
00046 
00047 
00048 // *****************************************************************************
00049 // Declare and define types in the OpenAccess namespace.
00050 // *****************************************************************************
00051 BEGIN_OA_NAMESPACE
00052 
00053 
00054 
00055 // *****************************************************************************
00056 // oaViaVariant
00057 // *****************************************************************************
00058 class OA_TECH_DLL_API oaViaVariant : public oaObject {
00059 public:
00060     static oaViaVariant     *find(const oaObject    *owner,
00061                                   const oaString    &name,
00062                                   oaBoolean         local = false);
00063 
00064     void                    destroy();
00065 
00066     void                    getName(oaString &name) const;
00067     oaViaDef                *getViaDef() const;
00068     void                    getViaDefName(oaString &name) const;
00069 
00070     enum {dtIndex = oacBaseViaVariantDataType};
00071 };
00072 
00073 
00074 
00075 // *****************************************************************************
00076 // oaStdViaVariant
00077 // *****************************************************************************
00078 class OA_TECH_DLL_API oaStdViaVariant : public oaViaVariant {
00079 public:
00080     static oaStdViaVariant  *create(oaObject            *owner,
00081                                     const oaString      &name,
00082                                     const oaStdViaDef   *viaDef,
00083                                     const oaViaParam    &params);
00084 
00085     static oaStdViaVariant  *find(const oaObject    *owner,
00086                                   const oaStdViaDef *viaDef,
00087                                   const oaViaParam  &params,
00088                                   oaBoolean         local = false);
00089 
00090     void                    getParams(oaViaParam &params) const;
00091 };
00092 
00093 
00094 
00095 // *****************************************************************************
00096 // oaCustomViaVariant
00097 // *****************************************************************************
00098 class OA_TECH_DLL_API oaCustomViaVariant : public oaViaVariant {
00099 public:
00100     static oaCustomViaVariant   *create(oaObject                *owner,
00101                                         const oaString          &name,
00102                                         const oaCustomViaDef    *viaDef,
00103                                         const oaParamArray      &params);
00104 
00105     static oaCustomViaVariant   *find(const oaObject        *owner,
00106                                       const oaCustomViaDef  *viaDef,
00107                                       const oaParamArray    &params,
00108                                       oaBoolean             local = false);
00109 
00110     void                        getParams(oaParamArray &params) const;
00111 };
00112 
00113 
00114 
00115 // *****************************************************************************
00116 // Tech Objects derived from oaObject
00117 // *****************************************************************************
00118 template<>
00119 class oaTraits<oaViaVariant> {
00120 public:
00121     typedef oaObject                parentType;
00122     typedef oaViaVariantModTypeEnum modTypeType;
00123     typedef oaViaVariantTbl         tblType;
00124     enum {domain = oacNoDomain};
00125     enum {isMultiDomain = false};
00126     enum {isConcrete = false};
00127     enum {dbType = oacBaseDBType};
00128     enum {dtIndex = oacBaseViaVariantDataType};
00129     enum {dataTypeEnumVal = oacBaseViaVariantDataType};
00130     enum {abstractTypeEnumVal = oacViaVariantType};
00131 };
00132 
00133 template<>
00134 class oaTraits<oaStdViaVariant> {
00135 public:
00136     typedef oaViaVariantModTypeEnum modTypeType;
00137     typedef oaViaVariantTbl         tblType;
00138     typedef oaViaVariant            parentType;
00139     enum {dtIndex = oacBaseViaVariantDataType};
00140     enum {dataTypeEnumVal = oacBaseViaVariantDataType};
00141     enum {abstractTypeEnumVal = oacViaVariantType};
00142     enum {domain = oacNoDomain};
00143     enum {isMultiDomain = false};
00144     enum {dbType = oacBaseDBType};
00145     enum {isConcrete = true};
00146     enum {objectTypeEnumVal = oacStdViaVariantType};
00147 };
00148 
00149 template<>
00150 class oaTraits<oaCustomViaVariant> {
00151 public:
00152     typedef oaViaVariantModTypeEnum modTypeType;
00153     typedef oaViaVariantTbl         tblType;
00154     typedef oaViaVariant            parentType;
00155     enum {dtIndex = oacBaseViaVariantDataType};
00156     enum {dataTypeEnumVal = oacBaseViaVariantDataType};
00157     enum {abstractTypeEnumVal = oacViaVariantType};
00158     enum {domain = oacNoDomain};
00159     enum {isMultiDomain = false};
00160     enum {dbType = oacBaseDBType};
00161     enum {isConcrete = true};
00162     enum {objectTypeEnumVal = oacCustomViaVariantType};
00163 };
00164 
00165 
00166 
00167 END_OA_NAMESPACE
00168 
00169 #endif

Return to top of page