oaWaferFeature.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaWaferFeature.h
00004 //
00005 // This file contains the definition for the oaWaferFeature class and its
00006 // public supporting classes. A wafer feature is an area that prevents printing
00007 // on the wafer itself.
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 2004-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(oaWaferFeature_P)
00028 #define oaWaferFeature_P
00029 
00030 
00031 
00032 // *****************************************************************************
00033 // Nested includes
00034 // *****************************************************************************
00035 #include "oaPointArray.h"
00036 #include "oaWaferModTypes.h"
00037 #include "oaWaferObject.h"
00038 
00039 
00040 
00041 // *****************************************************************************
00042 // Declare and define types in the OpenAccess namespace.
00043 // *****************************************************************************
00044 BEGIN_OA_NAMESPACE
00045 
00046 
00047 
00048 // *****************************************************************************
00049 // oaWaferFeatureEnum
00050 // *****************************************************************************
00051 #define oavNumWaferFeatures  6
00052 
00053 enum oaWaferFeatureEnum {
00054     oacFlatWaferFeature     = 0,
00055     oacNotchWaferFeature    = 1,
00056     oacBlockageWaferFeature = 2,
00057     oacClampWaferFeature    = 3,
00058     oacLaserWaferFeature    = 4,
00059     oacOtherWaferFeature    = 5
00060 };
00061 
00062 
00063 
00064 // *****************************************************************************
00065 // oaWaferFeatureType
00066 // *****************************************************************************
00067 class OA_WAFER_DLL_API oaWaferFeatureType {
00068 public:
00069                             oaWaferFeatureType(oaWaferFeatureEnum valueIn);
00070                             oaWaferFeatureType(const oaString &name);
00071                             ~oaWaferFeatureType();
00072 
00073     const oaString          &getName() const;
00074 
00075                             operator                oaWaferFeatureEnum() const;
00076 
00077 private:
00078     static const oaString   *initNames();
00079 
00080     oaWaferFeatureEnum      value;
00081 
00082     static const oaString   names[];
00083 };
00084 
00085 
00086 
00087 // *****************************************************************************
00088 // oaWaferFeature
00089 // *****************************************************************************
00090 class OA_WAFER_DLL_API oaWaferFeature : public oaWaferObject {
00091 public:
00092     static oaWaferFeature   *create(oaWaferDesc         *waferDesc,
00093                                     const oaString      &name,
00094                                     oaWaferFeatureType  feature,
00095                                     const oaPointArray  &boundary);
00096 
00097     static oaWaferFeature   *find(const oaWaferDesc *waferDesc,
00098                                   const oaString    &name);
00099 
00100     void                    destroy();
00101 
00102     void                    getName(oaString &name) const;
00103     oaWaferFeatureType      getWaferFeatureType() const;
00104     void                    getBoundary(oaPointArray &points) const;
00105 
00106     void                    setName(const oaString &name);
00107     void                    setWaferFeatureType(oaWaferFeatureType feature);
00108     void                    setBoundary(const oaPointArray &points);
00109 
00110     enum {dtIndex = oacWaferFeatureWaferDataType};
00111 };
00112 
00113 
00114 
00115 // *****************************************************************************
00116 // Wafer traits.
00117 // *****************************************************************************
00118 template<>
00119 class oaTraits<oaWaferFeature> {
00120 public:
00121     typedef oaWaferObject               parentType;
00122     typedef oaWaferFeatureModTypeEnum   modTypeType;
00123     enum {dbType = oacWaferDBType};
00124     enum {domain = oacNoDomain};
00125     enum {isMultiDomain = false};
00126     enum {dtIndex = oacWaferFeatureWaferDataType};
00127     enum {isConcrete = true};
00128     enum {objectTypeEnumVal = oacWaferFeatureType};
00129     enum {dataTypeEnumVal = oacWaferFeatureWaferDataType};
00130 };
00131 
00132 
00133 
00134 END_OA_NAMESPACE
00135 
00136 #endif

Return to top of page