base_classobject.cpp~

来自「270的linux说明」· CPP~ 代码 · 共 190 行

CPP~
190
字号
//==============================================================================// base_ClassObject.cpp//       Implementation of base class  InstanceCollection//==============================================================================#include "base_ClassObject.h"#include "base_ClassObject_Impl.h"using namespace Intel::Mobile::BaseAPI;//==============================================================================// C_Tor()//==============================================================================ClassObject::ClassObject( IntelMobileChar* type, const IntelMobileChar* version, void *pImpl )           : EventClient( pImpl ){	if ( type )    {        m_Type = ::strcpy( new IntelMobileChar[::strlen(type)+1], type );     }	if ( version )    {        m_Version = ::strcpy( new IntelMobileChar[::strlen(version)+1], version );     }	m_pImpl = new ClassObjectImplPtr( new ClassObjectImpl( this, type, version ) );}   //==============================================================================// D_Tor()//==============================================================================ClassObject::~ClassObject() {    if ( m_pImpl ) // If we have a valid impl * delete the SMART POINTER object    {		if ( m_Type )			delete[] m_Type;		if ( m_Version )			delete[] m_Version;        ClassObjectImplPtr* pClassImpl = reinterpret_cast<ClassObjectImplPtr*>(m_pImpl);                (*pClassImpl)->SetOwner( NULL ); // Remove this as owner of the impl.        delete pClassImpl;    }} //==============================================================================// GetType()//==============================================================================IntelMobileChar* ClassObject::GetType() const{     IntelMobileChar* pszType = NULL;    if ( m_pImpl )    {        pszType = ::strcpy( new IntelMobileChar[::strlen(m_Type)+1], m_Type );     }    return pszType;} // GetType()//==============================================================================// GetVersion()//==============================================================================IntelMobileChar* ClassObject::GetVersion() const{     IntelMobileChar* pszVersion = NULL;    if ( m_pImpl )    {        pszVersion = ::strcpy( new IntelMobileChar[::strlen(m_Version)+1], m_Version );     }    return pszVersion;} // GetVersion()//==============================================================================//==============================================================================// AddObserver()  //==============================================================================bool ClassObject::AddObserver( Event::EventType eType, Observer& observer ){ 	if ( IsEventAvailable( eType ) )	{	   if ( m_pImpl )		{			ClassObjectImplPtr		  spImpl = *reinterpret_cast<ClassObjectImplPtr*>(m_pImpl);			return spImpl->AddObserver( eType, *reinterpret_cast<ObserverImpl*>(observer.GetImpl()) );		}	}	else	{		IntelMobileException ex( IntelMobileText("ClassObject : NotSupportEvent Exception"), IntelMobileText("AddObserver"), IntelMobileText("AddObserver") );		throw( ex ); 	}		return false;} // AddObserver() //==============================================================================// RemoveObserver() : Remove it from the observer first. This returns a pointer //                    That may, or may not, be 'this' it is however garaunteed //                    to be of the same type.//==============================================================================bool ClassObject::RemoveObserver( Event::EventType eType, Observer& observer ){   	if ( IsEventAvailable( eType ) )	{		if ( m_pImpl )		{			ClassObjectImplPtr		  spImpl = *reinterpret_cast<ClassObjectImplPtr*>(m_pImpl);			return spImpl->RemoveObserver( eType, *reinterpret_cast<ObserverImpl*>(observer.GetImpl()) );		}	}	else	{		IntelMobileException ex( IntelMobileText("ClassObject : NotSupportEvent Exception"), IntelMobileText("RemoveObserver"), IntelMobileText("RemoveObserver") );		throw( ex ); 	}	return false;} // RemoveObserver() //==============================================================================// IsEventAvailable() : //==============================================================================bool ClassObject::IsEventAvailable( Event::EventType eType ) {    if ( m_pImpl )	{		ClassObjectImplPtr		  spImpl = *reinterpret_cast<ClassObjectImplPtr*>(m_pImpl);		return spImpl->IsEventAvailable( eType );	}	return false;} // IsEventAvailable()//==============================================================================// GetInstances() : Get the collection interface and return it in a wrapper.//==============================================================================InstanceCollection* ClassObject::GetInstances( const IntelMobileChar* sType ){    InstanceCollection        *pCollectionWrapper = NULL;    if ( m_pImpl )	{		ClassObjectImplPtr		  spImpl = *reinterpret_cast<ClassObjectImplPtr*>(m_pImpl);		InstanceCollectionImplPtr spCollection = spImpl->GetInstances( sType );		if ( spCollection )		{			pCollectionWrapper = new InstanceCollection( new InstanceCollectionImplPtr( spCollection ) );		}	}    return pCollectionWrapper;} // GetInstances()//==============================================================================// GetInstance() : Get a specific instance interface //==============================================================================InstanceObject* ClassObject::GetInstance( const IntelMobileChar* sKey ) {     InstanceObject	      *pInstanceWrapper = NULL;	if ( m_pImpl )	{		ClassObjectImplPtr		  spImpl = *reinterpret_cast<ClassObjectImplPtr*>(m_pImpl);		InstanceObjectImplPtr spInstance = spImpl->GetInstance( sKey );	  		if ( spInstance )		{			pInstanceWrapper = new InstanceObject( new InstanceObjectImplPtr( spInstance ) );		}	}    return pInstanceWrapper;} // GetInstance() //==============================================================================

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?