GME
13
|
00001 //############################################################################################################################################### 00002 // 00003 // Object Constraint Language Generic Manager 00004 // OCLObject.cpp 00005 // 00006 //############################################################################################################################################### 00007 #include "Solve4786.h" 00008 #include "OCLObject.h" 00009 00010 #define UNDEFINED_TYPENAME "" 00011 00012 namespace OclMeta 00013 { 00014 typedef OclCommon::RCSmart<OclImplementation::Object> RCObject; 00015 00016 //############################################################################################################################################## 00017 // 00018 // C L A S S : OclMetat::Object <<< # OclCommon::RCSmart< OclImplementation::Object > 00019 // 00020 //############################################################################################################################################## 00021 00022 const Object Object::UNDEFINED = Object(); 00023 00024 Object::Object() 00025 : RCObject(), m_strStaticTypeName( UNDEFINED_TYPENAME ) 00026 { 00027 } 00028 00029 Object::Object( OclImplementation::Object* pImplementation ) 00030 : RCObject( pImplementation ), m_strStaticTypeName( pImplementation->GetTypeName() ) 00031 { 00032 } 00033 00034 Object::Object( const Object& object ) 00035 : RCObject( object ), m_strStaticTypeName( object.m_strStaticTypeName ) 00036 { 00037 } 00038 00039 Object& Object::operator=( const Object& object ) 00040 { 00041 if ( this != &object ) { 00042 m_strStaticTypeName = object.m_strStaticTypeName; 00043 } 00044 RCObject::operator=( object ); 00045 return *this; 00046 } 00047 00048 bool Object::Equals( const Object& object ) const 00049 { 00050 if ( IsUndefined() ) 00051 if ( object.IsUndefined() ) 00052 return true; 00053 else 00054 return false; 00055 else 00056 if ( object.IsUndefined() ) 00057 return false; 00058 else 00059 return Ptr()->Equals( *object.Ptr() ); 00060 } 00061 00062 bool Object::operator==( const Object& object ) const 00063 { 00064 return Equals( object ); 00065 } 00066 00067 bool Object::operator!=( const Object& object ) const 00068 { 00069 return ! Equals( object ); 00070 } 00071 00072 std::string Object::GetTypeName() const 00073 { 00074 return ( IsUndefined() ) ? UNDEFINED_TYPENAME : Ptr()->GetTypeName(); 00075 } 00076 00077 std::string Object::GetStaticTypeName() const 00078 { 00079 return m_strStaticTypeName; 00080 } 00081 00082 void Object::SetStaticTypeName( const std::string& strStaticTypeName ) 00083 { 00084 m_strStaticTypeName = strStaticTypeName; 00085 } 00086 00087 bool Object::IsCompound() const 00088 { 00089 if ( IsUndefined() ) 00090 return false; 00091 return Ptr()->IsCompound(); 00092 } 00093 00094 bool Object::IsComparable() const 00095 { 00096 if ( IsUndefined() ) 00097 return false; 00098 return Ptr()->IsComparable(); 00099 } 00100 00101 bool Object::IsUndefined() const 00102 { 00103 return IsNull() || Ptr()->IsUndefined(); 00104 } 00105 00106 OclImplementation::Object* Object::GetImplementation() const 00107 { 00108 return ( IsUndefined() ) ? NULL : Ptr(); 00109 } 00110 00111 Object Object::Clone() const 00112 { 00113 return ( IsUndefined() ) ? UNDEFINED : Object( Ptr()->Clone() ); 00114 } 00115 00116 std::string Object::Print() const 00117 { 00118 return ( IsUndefined() ) ? "undefined" : Ptr()->Print(); 00119 } 00120 00121 IUnknown* Object::GetObject() const 00122 { 00123 return ( IsUndefined() ) ? NULL : Ptr()->GetObject(); 00124 } 00125 00126 }; // namespace OclMeta 00127