GME  13
OCLObjectExGME.cpp
Go to the documentation of this file.
00001 //###############################################################################################################################################
00002 //
00003 //      Object Constraint Language Generic Manager
00004 //      OCLObjectExGME.cpp
00005 //
00006 //###############################################################################################################################################
00007 #include "Solve4786.h"
00008 #include "OCLObjectExGME.h"
00009 #include "OCLCommonEx.h"
00010 #include "OCLType.h"
00011 
00012 namespace OclGmeCM
00013 {
00014 
00015 //##############################################################################################################################################
00016 //
00017 //      C L A S S : OclGmeCM::Object <<< + Any
00018 //
00019 //##############################################################################################################################################
00020 
00021         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaObject> value )
00022                 : Any( pManager, "gme::Object" ), m_Value( value.p )
00023         {
00024                 SetTypeName();
00025         }
00026 
00027         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaFolder> value )
00028                 : Any( pManager, "gme::Folder" ), m_Value( value.p )
00029         {
00030                 SetTypeName();
00031         }
00032 
00033         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaFCO> value )
00034                 : Any( pManager, "gme::FCO" ), m_Value( value.p )
00035         {
00036                 SetTypeName();
00037         }
00038 
00039         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaAtom> value )
00040                 : Any( pManager, "gme::Atom" ), m_Value( value.p )
00041         {
00042                 SetTypeName();
00043         }
00044 
00045         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaModel> value )
00046                 : Any( pManager, "gme::Model" ), m_Value( value.p )
00047         {
00048                 SetTypeName();
00049         }
00050 
00051         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaConnection> value )
00052                 : Any( pManager, "gme::Connection" ), m_Value( value.p )
00053         {
00054                 SetTypeName();
00055         }
00056 
00057         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaReference> value )
00058                 : Any( pManager, "gme::Reference" ), m_Value( value.p )
00059         {
00060                 SetTypeName();
00061         }
00062 
00063         Object::Object( OclMeta::TypeManager* pManager, CComPtr<IMgaSet> value )
00064                 : Any( pManager, "gme::Set" ), m_Value( value.p )
00065         {
00066                 SetTypeName();
00067         }
00068 
00069         void Object::SetTypeName()
00070         {
00071                 if ( m_Value != NULL  &&  m_Value.p )
00072                         m_strTypeName = "meta::" + OclCommonEx::GetObjectKind( m_Value );
00073         }
00074 
00075         Any* Object::Clone() const
00076         {
00077                 Object* pObject = new Object( GetTypeManager(), m_Value );
00078                 pObject->m_strTypeName = m_strTypeName;
00079                 return pObject;
00080         }
00081 
00082         int Object::GetValue( CComPtr<IMgaObject>& value ) const
00083         {
00084                 value = m_Value;
00085                 return S_OK;
00086         }
00087 
00088         void Object::SetValue( CComPtr<IMgaObject> value )
00089         {
00090                 m_Value = value.p;
00091                 SetTypeName();
00092         }
00093 
00094         int Object::GetValue( CComPtr<IMgaFolder>& value ) const
00095         {
00096                 if (m_Value == NULL)
00097                 {
00098                         value = NULL;
00099                         return 0;
00100                 }
00101                 return m_Value->QueryInterface( &value );
00102         }
00103 
00104         void Object::SetValue( CComPtr<IMgaFolder> value )
00105         {
00106                 m_Value = value.p;
00107                 SetTypeName();
00108         }
00109 
00110         int Object::GetValue( CComPtr<IMgaFCO>& value ) const
00111         {
00112                 if (m_Value == NULL)
00113                 {
00114                         value = NULL;
00115                         return 0;
00116                 }
00117                 return m_Value->QueryInterface( &value );
00118         }
00119 
00120         void Object::SetValue( CComPtr<IMgaFCO> value )
00121         {
00122                 m_Value = value.p;
00123                 SetTypeName();
00124         }
00125 
00126         int Object::GetValue( CComPtr<IMgaModel>& value ) const
00127         {
00128                 if (m_Value == NULL)
00129                 {
00130                         value = NULL;
00131                         return 0;
00132                 }
00133                 return m_Value->QueryInterface( &value );
00134         }
00135 
00136         void Object::SetValue( CComPtr<IMgaModel> value )
00137         {
00138                 m_Value = value.p;
00139                 SetTypeName();
00140         }
00141 
00142         int Object::GetValue( CComPtr<IMgaAtom>& value ) const
00143         {
00144                 if (m_Value == NULL)
00145                 {
00146                         value = NULL;
00147                         return 0;
00148                 }
00149                 return m_Value->QueryInterface( &value );
00150         }
00151 
00152         void Object::SetValue( CComPtr<IMgaAtom> value )
00153         {
00154                 m_Value = value.p;
00155                 SetTypeName();
00156         }
00157 
00158         int Object::GetValue( CComPtr<IMgaReference>& value ) const
00159         {
00160                 if (m_Value == NULL)
00161                 {
00162                         value = NULL;
00163                         return 0;
00164                 }
00165                 return m_Value->QueryInterface( &value );
00166         }
00167 
00168         void Object::SetValue( CComPtr<IMgaReference> value )
00169         {
00170                 m_Value = value.p;
00171                 SetTypeName();
00172         }
00173 
00174         int Object::GetValue( CComPtr<IMgaConnection>& value ) const
00175         {
00176                 if (m_Value == NULL)
00177                 {
00178                         value = NULL;
00179                         return 0;
00180                 }
00181                 return m_Value->QueryInterface( &value );
00182         }
00183 
00184         void Object::SetValue( CComPtr<IMgaConnection> value )
00185         {
00186                 m_Value = value.p;
00187                 SetTypeName();
00188         }
00189 
00190         int Object::GetValue( CComPtr<IMgaSet>& value ) const
00191         {
00192                 if (m_Value == NULL)
00193                 {
00194                         value = NULL;
00195                         return 0;
00196                 }
00197                 return m_Value->QueryInterface( &value );
00198         }
00199 
00200         void Object::SetValue( CComPtr<IMgaSet> value )
00201         {
00202                 m_Value = value.p;
00203                 SetTypeName();
00204         }
00205 
00206         bool Object::Equals( const Any& object ) const
00207         {
00208                 if ( GetTypeManager()->IsTypeA( object.GetTypeName(), "gme::Object" ) >= 0 )
00209                         return m_Value == ( ( Object* ) &object )->m_Value;
00210                 else
00211                         return false;
00212         }
00213 
00214         bool Object::operator==( const Object& object ) const
00215         {
00216                 return Equals( object );
00217         }
00218         bool Object::operator!=( const Object& object ) const
00219         {
00220                 return ! ( *this == object );
00221         }
00222 
00223         std::string Object::Print() const
00224         {
00225                 return OclCommonEx::GetObjectDescription( m_Value );
00226         }
00227 
00228         IUnknown* Object::GetObject() const
00229         {
00230                 if (m_Value == NULL)
00231                         return NULL;
00232                 IUnknown* ret = NULL;
00233                 m_Value.QueryInterface(&ret);
00234                 return ret;
00235         }
00236 
00237 //##############################################################################################################################################
00238 //
00239 //      C L A S S : OclGmeCM::ConnectionPoint <<< + Any
00240 //
00241 //##############################################################################################################################################
00242 
00243         ConnectionPoint::ConnectionPoint( OclMeta::TypeManager* pManager, CComPtr<IMgaConnPoint> value )
00244                 : Any( pManager, "gme::ConnectionPoint" ), m_Value( value )
00245         {
00246         }
00247 
00248         Any* ConnectionPoint::Clone() const
00249         {
00250                 return new ConnectionPoint( GetTypeManager(), m_Value );
00251         }
00252 
00253         int ConnectionPoint::GetValue( CComPtr<IMgaConnPoint>& value ) const
00254         {
00255                 value = m_Value;
00256                 return S_OK;
00257         }
00258 
00259         void ConnectionPoint::SetValue( CComPtr<IMgaConnPoint> value )
00260         {
00261                 m_Value = value;
00262         }
00263 
00264         bool ConnectionPoint::Equals( const Any& object ) const
00265         {
00266                 if ( GetTypeManager()->IsTypeA( object.GetTypeName(), "gme::ConnectionPoint" ) >= 0 )
00267                         return m_Value == ( ( ConnectionPoint* ) &object )->m_Value;
00268                 else
00269                         return false;
00270         }
00271 
00272         bool ConnectionPoint::operator==( const ConnectionPoint& object ) const
00273         {
00274                 return Equals( object );
00275         }
00276 
00277         bool ConnectionPoint::operator!=( const ConnectionPoint& object ) const
00278         {
00279                 return ! ( *this == object );
00280         }
00281 
00282         std::string ConnectionPoint::Print() const
00283         {
00284                 return OclCommonEx::GetConnectionPointDescription( m_Value );
00285         }
00286 
00287 //##############################################################################################################################################
00288 //
00289 //      C L A S S : OclGmeCM::Project <<< + Any
00290 //
00291 //##############################################################################################################################################
00292 
00293         Project::Project( OclMeta::TypeManager* pManager, CComPtr<IMgaProject> value )
00294                 : Any( pManager, "gme::Project" ), m_Value( value )
00295         {
00296         }
00297 
00298         Any* Project::Clone() const
00299         {
00300                 return new Project( GetTypeManager(), m_Value );
00301         }
00302 
00303         int Project::GetValue( CComPtr<IMgaProject>& value ) const
00304         {
00305                 value = m_Value;
00306                 return S_OK;
00307         }
00308 
00309         void Project::SetValue( CComPtr<IMgaProject> value )
00310         {
00311                 m_Value = value;
00312         }
00313 
00314         bool Project::Equals( const Any& object ) const
00315         {
00316                 if ( GetTypeManager()->IsTypeA( object.GetTypeName(), "gme::Project" ) >= 0 )
00317                         return m_Value == ( ( Project* ) &object )->m_Value;
00318                 else
00319                         return false;
00320         }
00321 
00322         bool Project::operator==( const Project& object ) const
00323         {
00324                 return Equals( object );
00325         }
00326 
00327         bool Project::operator!=( const Project& object ) const
00328         {
00329                 return ! ( *this == object );
00330         }
00331 
00332         std::string Project::Print() const
00333         {
00334                 CString strName;
00335                 COMTHROW( m_Value->get_Name( PutOut( strName ) ) );
00336                 return std::string("gme::Project { name: ") + std::string(CStringA(strName)) + "; }";
00337         }
00338 
00339 }; // namespace OclGmeCM