oaSizedLayer.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaSizedLayer.h
00004 //
00005 // This file contains the definition for the oaSizedLayer class. The
00006 // oaSizedLayer class defines a sized layer, which is formed from a
00007 // layers and a sizing operation on that layer oaSizeOp.
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 2002-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(oaSizedLayer_P)
00028 #define oaSizedLayer_P
00029 
00030 
00031 
00032 // *****************************************************************************
00033 // Nested includes
00034 // *****************************************************************************
00035 #include "oaLayer.h"
00036 
00037 
00038 
00039 // *****************************************************************************
00040 // Declare and define types in the OpenAccess namespace.
00041 // *****************************************************************************
00042 BEGIN_OA_NAMESPACE
00043 
00044 
00045 
00046 // *****************************************************************************
00047 // oaSizeOpEnum
00048 // *****************************************************************************
00049 #define oavNumSizeOps   2
00050 
00051 enum oaSizeOpEnum {
00052     oacGrowSizeOp   = 0,
00053     oacShrinkSizeOp = 1
00054 };
00055 
00056 
00057 
00058 // *****************************************************************************
00059 // oaSizeOp
00060 // *****************************************************************************
00061 class OA_TECH_DLL_API oaSizeOp {
00062 public:
00063                             oaSizeOp(oaSizeOpEnum valueIn);
00064                             oaSizeOp(const oaString &name);
00065                             ~oaSizeOp();
00066 
00067     const oaString          &getName() const;
00068 
00069                             operator                oaSizeOpEnum() const;
00070 
00071 private:
00072     oaSizeOpEnum            value;
00073 
00074     static const oaString   names[];
00075 };
00076 
00077 
00078 
00079 // *****************************************************************************
00080 // oaSizedLayer
00081 // *****************************************************************************
00082 class OA_TECH_DLL_API oaSizedLayer : public oaLayer {
00083 public:
00084     static oaSizedLayer     *create(oaLayer         *layer,
00085                                     oaSizeOp        operation,
00086                                     oaDist          value,
00087                                     const oaString  &name,
00088                                     oaLayerNum      number);
00089 
00090     static oaSizedLayer     *find(const oaTech      *tech,
00091                                   const oaString    &name);
00092     static oaSizedLayer     *find(const oaTech  *tech,
00093                                   oaLayerNum    number);
00094     static oaSizedLayer     *find(const oaLayer *layer,
00095                                   oaSizeOp      operation,
00096                                   oaDist        value);
00097 
00098     oaLayer                 *getLayer() const;
00099     oaSizeOp                getOperation() const;
00100     oaDist                  getValue() const;
00101 };
00102 
00103 
00104 
00105 // *****************************************************************************
00106 // oaTech traits
00107 // *****************************************************************************
00108 template<>
00109 class oaTraits<oaSizedLayer> {
00110 public:
00111     typedef oaLayerModTypeEnum  modTypeType;
00112     typedef oaLayer             parentType;
00113     enum {dtIndex = oacLayerDataType};
00114     enum {dataTypeEnumVal = oacLayerDataType};
00115     enum {dbType = oacTechDBType};
00116     enum {domain = oacNoDomain};
00117     enum {isMultiDomain = false};
00118     enum {isConcrete = true};
00119     enum {objectTypeEnumVal = oacSizedLayerType};
00120 };
00121 
00122 
00123 
00124 END_OA_NAMESPACE
00125 
00126 #endif

Return to top of page