From 003662ef33e603444bee86f33f35cf74fe9fcc1f Mon Sep 17 00:00:00 2001 From: spick <pick@vr.rwth-aachen.de> Date: Fri, 2 Dec 2016 15:14:20 +0100 Subject: [PATCH] Cleaned up IVistaObserver code. --- VistaCoreLibs/VistaAspects/VistaObserver.cpp | 95 +++++++++----------- VistaCoreLibs/VistaAspects/VistaObserver.h | 37 ++++---- 2 files changed, 56 insertions(+), 76 deletions(-) diff --git a/VistaCoreLibs/VistaAspects/VistaObserver.cpp b/VistaCoreLibs/VistaAspects/VistaObserver.cpp index 644620869..760baf812 100644 --- a/VistaCoreLibs/VistaAspects/VistaObserver.cpp +++ b/VistaCoreLibs/VistaAspects/VistaObserver.cpp @@ -34,28 +34,20 @@ /* CONSTRUCTORS / DESTRUCTOR */ /*============================================================================*/ - -IVistaObserver::IVistaObserver(IVistaObserver &) -{} - IVistaObserver::IVistaObserver() : m_bObserverEnabled(true) -{} +{ } IVistaObserver::~IVistaObserver() { // copy vector of observables, because the original (member) version // is altered during the ReleaseObserveable call - std::vector<IVistaObserveable *> vecObs = m_vecObserveables; + std::vector< IVistaObserveable* > vecObs = m_vecObserveables; - std::vector<IVistaObserveable *>::iterator it; - for (it = vecObs.begin(); it != vecObs.end(); ++it) + for( IVistaObserveable* pObs : vecObs ) { - ReleaseObserveable(*it, IVistaObserveable::TICKET_NONE); + ReleaseObserveable( pObs, IVistaObserveable::TICKET_NONE ); } - - m_vecObserveables.clear(); - } /*============================================================================*/ @@ -67,77 +59,73 @@ bool IVistaObserver::GetIsObserverEnabled() const return m_bObserverEnabled; } -void IVistaObserver::SetIsObserverEnabled(bool bEnabled) +void IVistaObserver::SetIsObserverEnabled( bool bEnabled ) { m_bObserverEnabled = bEnabled; } -void IVistaObserver::UpdateRequest(IVistaObserveable *pObserveable, int msg, int nTicket) +void IVistaObserver::UpdateRequest( IVistaObserveable* pObserveable, + int msg, + int nTicket ) { - if(m_bObserverEnabled) - ObserverUpdate(pObserveable, msg, nTicket); + if( m_bObserverEnabled ) + { + ObserverUpdate( pObserveable, msg, nTicket ); + } } -bool IVistaObserver::ObserveableDeleteRequest( - IVistaObserveable* pObserveable, - int nTicket /*= IVistaObserveable::TICKET_NONE */ - ) +bool IVistaObserver::ObserveableDeleteRequest( IVistaObserveable* pObserveable, + int nTicket ) { return true; } -void IVistaObserver::ObserveableDelete( - IVistaObserveable* pObserveable, - int nTicket /*= IVistaObserveable::TICKET_NONE */ - ) +void IVistaObserver::ObserveableDelete( IVistaObserveable* pObserveable, int nTicket ) { - // just delete pObserveable from list - - std::vector<IVistaObserveable*>::iterator it = - std::find(m_vecObserveables.begin(), m_vecObserveables.end(), pObserveable); + ObserveablesVec::iterator it = std::find( m_vecObserveables.begin(), + m_vecObserveables.end(), + pObserveable ); - if (it != m_vecObserveables.end()) + if( it != m_vecObserveables.end() ) { - m_vecObserveables.erase(it); + m_vecObserveables.erase( it ); } } -void IVistaObserver::ReleaseObserveable( - IVistaObserveable* pObserveable, - int nTicket /*= IVistaObserveable::TICKET_NONE */ - ) +void IVistaObserver::ReleaseObserveable( IVistaObserveable* pObserveable, int nTicket ) { - if (Observes(pObserveable)) + if( Observes( pObserveable ) ) { - pObserveable->DetachObserver(this); + pObserveable->DetachObserver( this ); - std::vector<IVistaObserveable*>::iterator it = - std::find(m_vecObserveables.begin(), m_vecObserveables.end(), pObserveable); + ObserveablesVec::iterator it = std::find( m_vecObserveables.begin(), + m_vecObserveables.end(), + pObserveable ); - if (it != m_vecObserveables.end()) + if( it != m_vecObserveables.end() ) { - m_vecObserveables.erase(it); + m_vecObserveables.erase( it ); } } } -bool IVistaObserver::Observes(IVistaObserveable* pObserveable) +bool IVistaObserver::Observes( IVistaObserveable* pObserveable ) { - std::vector<IVistaObserveable *>::iterator it = - std::find(m_vecObserveables.begin(), m_vecObserveables.end(), pObserveable); + ObserveablesVec::iterator it = std::find( m_vecObserveables.begin(), + m_vecObserveables.end(), + pObserveable ); - return (it != m_vecObserveables.end()); + return ( it != m_vecObserveables.end() ); } -void IVistaObserver::Observe( - IVistaObserveable* pObserveable, - int nTicket /*= IVistaObserveable::TICKET_NONE */ - ) +void IVistaObserver::Observe( IVistaObserveable* pObserveable, int nTicket ) { - if (!Observes(pObserveable)) + if( !Observes( pObserveable ) ) { - if (pObserveable->AttachObserver(this, nTicket)) - m_vecObserveables.push_back(pObserveable); + if( pObserveable->AttachObserver( this, nTicket ) ) + { + m_vecObserveables.push_back( pObserveable ); + } } } @@ -151,14 +139,13 @@ VistaSimpleObserver::VistaSimpleObserver( ObserverUpdateFunc fnObserverUpdate ) { } void VistaSimpleObserver::ObserverUpdate( IVistaObserveable* pObserveable, - int nMsg, - int nTicket ) + int nMsg, + int nTicket ) { m_fnObserverUpdate( pObserveable, nMsg, nTicket ); } - /*============================================================================*/ /* LOCAL VARS AND FUNCS */ /*============================================================================*/ diff --git a/VistaCoreLibs/VistaAspects/VistaObserver.h b/VistaCoreLibs/VistaAspects/VistaObserver.h index 14174cf8e..f3ffa0bab 100644 --- a/VistaCoreLibs/VistaAspects/VistaObserver.h +++ b/VistaCoreLibs/VistaAspects/VistaObserver.h @@ -62,8 +62,7 @@ class VISTAASPECTSAPI IVistaObserver { public: virtual ~IVistaObserver(); - - + /** * An observeable is about to be deleted, this can be forbidden by returning * false here. @@ -78,8 +77,7 @@ public: * @return true iff pObserveable can be deleted */ virtual bool ObserveableDeleteRequest( IVistaObserveable* pObserveable, - int nTicket = IVistaObserveable::TICKET_NONE ); - + int nTicket = IVistaObserveable::TICKET_NONE ); /** * This is sent to the observer before the observeable is deleted. Note that this @@ -95,7 +93,7 @@ public: * @param pObserveable the observeable to be deleted */ virtual void ObserveableDelete( IVistaObserveable* pObserveable, - int nTicket = IVistaObserveable::TICKET_NONE ); + int nTicket = IVistaObserveable::TICKET_NONE ); /** * This message is sent when pObserveable shall be released and not be observed anymore. @@ -105,7 +103,7 @@ public: * @param pObserveable the observeable to be released. */ virtual void ReleaseObserveable( IVistaObserveable* pObserveable, - int nTicket = IVistaObserveable::TICKET_NONE ); + int nTicket = IVistaObserveable::TICKET_NONE ); /** @@ -117,8 +115,8 @@ public: * is observed. * @param pObserveable the observeable that changed its state. */ - virtual void ObserverUpdate(IVistaObserveable* pObserveable, - int nMsg, int nTicket) = 0; + virtual void ObserverUpdate( IVistaObserveable* pObserveable, + int nMsg, int nTicket ) = 0; /** * This method can be used to query whether pObserveable is observed by this observer or not. @@ -134,32 +132,27 @@ public: * IsObserved(pObserveable) must return true after a call to this * @param pObserveable the observeable to be observed */ - virtual void Observe( IVistaObserveable* pObserveable, - int nTicket = IVistaObserveable::TICKET_NONE ); + virtual void Observe( IVistaObserveable* pObserveable, + int nTicket = IVistaObserveable::TICKET_NONE ); void UpdateRequest( IVistaObserveable* pObserveable, int nMsg, int nTicket ); bool GetIsObserverEnabled() const; - virtual void SetIsObserverEnabled(bool bEnabled); + virtual void SetIsObserverEnabled( bool bEnabled ); + protected: IVistaObserver(); - // list of objects observed by this observer - // Note: this is implemented as a vector (even though we have to perform - // operations like deleting arbitrary elements), as this is nevertheless - // way faster than on an std::list. - std::vector<IVistaObserveable *> m_vecObserveables; + typedef std::vector< IVistaObserveable* > ObserveablesVec; + ObserveablesVec m_vecObserveables; private: - /** - * Copy-constructor. We prevent copying. - */ - IVistaObserver(IVistaObserver &); + IVistaObserver( const IVistaObserver& ) = delete; + IVistaObserver& operator=( const IVistaObserver& ) = delete; bool m_bObserverEnabled; - }; /** @@ -178,7 +171,7 @@ public: VistaSimpleObserver( ObserverUpdateFunc fnObserverUpdate ); ~VistaSimpleObserver() override = default; - void ObserverUpdate( IVistaObserveable* pObserveable, int nMsg, int nTicket ); + void ObserverUpdate( IVistaObserveable* pObserveable, int nMsg, int nTicket ) override; private: ObserverUpdateFunc m_fnObserverUpdate; -- GitLab