GME  13
OCLFormalParameter.h
Go to the documentation of this file.
00001 //###############################################################################################################################################
00002 //
00003 //      Object Constraint Language Generic Manager
00004 //      OCLFormalParameter.h
00005 //
00006 //###############################################################################################################################################
00007 
00008 #ifndef OCLFormalParameter_h
00009 #define OCLFormalParameter_h
00010 
00011 #include "OCLCommon.h"
00012 
00013 namespace OclCommon
00014 {
00015         class FormalParameter;
00016         typedef std::vector< FormalParameter > FormalParameterVector;
00017 
00018 //##############################################################################################################################################
00019 //
00020 //      C L A S S : OclMeta::FormalParameter
00021 //
00022 //==============================================================================================================================================
00023 //
00024 //      D E S C R I P T I O N :
00025 //
00026 //##############################################################################################################################################
00027 
00028         class FormalParameter
00029         {
00030                 private :
00031                         std::string     m_strName;
00032                         std::string     m_strType;
00033                         bool    m_bRequired;
00034 
00035                 public :
00036                         FormalParameter( const std::string& strName, const std::string& strType, bool bRequired )
00037                                 : m_strName( strName ), m_strType( strType ), m_bRequired( bRequired )
00038                         {
00039                         }
00040 
00041                         FormalParameter( const std::string& strType, bool bRequired )
00042                                 : m_strName( "" ), m_strType( strType ), m_bRequired( bRequired )
00043                         {
00044                         }
00045 
00046                         FormalParameter()
00047                                 : m_strName( "" ), m_strType( "" ), m_bRequired( false )
00048                         {
00049                         }
00050 
00051                         FormalParameter( const FormalParameter& object )
00052                                 : m_strName( object.m_strName ), m_strType( object.m_strType ), m_bRequired( object.m_bRequired )
00053                         {
00054                         }
00055 
00056                         FormalParameter& operator=( const FormalParameter& object )
00057                         {
00058                                 if ( this != &object ) {
00059                                         m_strName = object.m_strName;
00060                                         m_strType = object.m_strType;
00061                                         m_bRequired = object.m_bRequired;
00062                                 }
00063                                 return *this;
00064                         }
00065 
00066                         bool IsIdentical( const FormalParameter& object ) const
00067                         {
00068                                 return m_strType == object.m_strType;
00069                         }
00070 
00071                         bool IsIdentical( const std::string& strType ) const
00072                         {
00073                                 return m_strType == strType;
00074                         }
00075 
00076                         bool operator==( const FormalParameter& object ) const
00077                         {
00078                                 return IsIdentical( object ) && m_strName == object.m_strName && m_bRequired == object.m_bRequired;
00079                         }
00080 
00081                         bool operator!=( const FormalParameter& object ) const
00082                         {
00083                                 return ! ( *this == object );
00084                         }
00085 
00086                         bool IsRequired() const
00087                         {
00088                                 return m_bRequired;
00089                         }
00090 
00091                         std::string GetName() const
00092                         {
00093                                 return m_strName;
00094                         }
00095 
00096                         std::string GetTypeName() const
00097                         {
00098                                 return m_strType;
00099                         }
00100         };
00101 
00102 }; // namespace OclCommon
00103 
00104 #endif // OCLFormalParameter_h