oaModBusTermBit.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaModBusTermBit.h
00004 //
00005 // This file contains the definition for the oaModBusTermBit class and its
00006 // public supporting classes. The oaModBusTermBit class implements a single bit
00007 // of a logical busTerm. BusTermBits are automatically created and destroyed as
00008 // busTerms are created and destroyed. Editing is restricted on implicitly
00009 // created busTermBits because they are automatically deleted when the last
00010 // busTerm containing the bit is deleted.
00011 //
00012 // BusTermBits may be explicitly created as well. Explicitly created
00013 // busTermBits may be modified like other terminal objects because they are not
00014 // automatically deleted even if they represent a bit of a busTerm that is
00015 // deleted.
00016 //
00017 // The implicit busTermBits of a busTerm may be made explicit when the busTerm
00018 // undergoes "scalarization". The scalarization of a busTerm makes all
00019 // associated busTermBits explicit, that is, as if they had been created
00020 // explicitly.
00021 //
00022 // *****************************************************************************
00023 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00024 // Integration Initiative, this material may not be copied, modified,
00025 // re-published, uploaded, executed, or distributed in any way, in any medium,
00026 // in whole or in part, without prior written permission from Cadence.
00027 //
00028 //                Copyright 2003-2005 Cadence Design Systems, Inc.
00029 //                           All Rights Reserved.
00030 //
00031 //  $Author: icftcm $
00032 //  $Revision: #1 $
00033 //  $Date: 2010/08/09 $
00034 //  $State: Exp $
00035 // *****************************************************************************
00036 // *****************************************************************************
00037 
00038 
00039 
00040 #if !defined(oaModBusTermBit_P)
00041 #define oaModBusTermBit_P
00042 
00043 
00044 
00045 // *****************************************************************************
00046 // Nested includes
00047 // *****************************************************************************
00048 #include "oaModTerm.h"
00049 
00050 
00051 
00052 // *****************************************************************************
00053 // Declare and define types in the OpenAccess namespace.
00054 // *****************************************************************************
00055 BEGIN_OA_NAMESPACE
00056 
00057 
00058 
00059 // *****************************************************************************
00060 // oaModBusTermBit
00061 // *****************************************************************************
00062 class OA_DESIGN_DLL_API oaModBusTermBit : public oaModBitTerm {
00063 public:
00064     static oaModBusTermBit  *create(oaModBitNet         *modNet,
00065                                     const oaScalarName  &baseName,
00066                                     oaUInt4             bitIndex,
00067                                     oaTermType          type = oacInputOutputTermType);
00068     static oaModBusTermBit  *create(oaModBitNet             *modNet,
00069                                     const oaVectorBitName   &bitName,
00070                                     oaTermType              type = oacInputOutputTermType);
00071 
00072     static oaModBusTermBit  *find(const oaModule        *module,
00073                                   const oaScalarName    &baseName,
00074                                   oaUInt4               bitIndex);
00075 
00076     static oaBoolean        isValidName(const oaModBitNet   *net,
00077                                         const oaScalarName  &baseName,
00078                                         oaUInt4             bitIndex);
00079 
00080     oaModBusTermDef         *getDef() const;
00081     oaUInt4                 getBitIndex() const;
00082 
00083     using                   oaModTerm::getName;
00084     void                    getName(oaVectorBitName &name) const;
00085 
00086     void                    setName(const oaScalarName  &baseName,
00087                                     oaUInt4             bitIndex);
00088 };
00089 
00090 
00091 
00092 // *****************************************************************************
00093 // Design Traits.
00094 // *****************************************************************************
00095 template<>
00096 class oaTraits<oaModBusTermBit> {
00097 public:
00098     typedef oaTermModTypeEnum   modTypeType;
00099     typedef oaModBitTerm        parentType;
00100     enum {dtIndex = oacTermDataType};
00101     enum {dataTypeEnumVal = oacTermDataType};
00102     enum {domain = oacModDomain};
00103     enum {isMultiDomain = true};
00104     enum {dbType = oacDesignDBType};
00105     enum {isConcrete = true};
00106     enum {objectTypeEnumVal = oacModBusTermBitType};
00107 };
00108 
00109 
00110 
00111 END_OA_NAMESPACE
00112 
00113 #endif

Return to top of page