GME
13
|
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