Giri's C++ Support Library
C++ library providing everything you need to quickly create awesome applications.
giri::Observable< T > Class Template Reference

Observable class. Inherited classes can notify all classes which inherit from Observer. More...

#include <Observer.h>

Inheritance diagram for giri::Observable< T >:
Collaboration diagram for giri::Observable< T >:

Public Member Functions

void subscribe (const std::weak_ptr< Observer< T > > &obs)
 
void unsubscribe (const std::weak_ptr< Observer< T > > &obs)
 
void unsubscribeAll ()
 
void notify ()
 

Additional Inherited Members

- Public Types inherited from giri::Object< Observable< T > >
using SPtr = std::shared_ptr< Observable< T > >
 
using UPtr = std::unique_ptr< Observable< T > >
 
using WPtr = std::weak_ptr< Observable< T > >
 

Detailed Description

template<typename T>
class giri::Observable< T >

Observable class. Inherited classes can notify all classes which inherit from Observer.

Example Usage:

// .... example starts at Observer class documentation
class MyObserver : public Observer<MyObservable>
{
public:
MyObserver(const std::string & name) : m_Name(name){}
void update(MyObservable::SPtr obs)
{
std::cout << m_Name << " Update: "<< obs->GetObservable() << std::endl;
}
using SPtr = std::shared_ptr<MyObserver>;
using UPtr = std::unique_ptr<MyObserver>;
using WPtr = std::weak_ptr<MyObserver>;
private:
std::string m_Name;
};
int main()
{
MyObservable::SPtr osrvbl = std::make_shared<MyObservable>();
MyObserver::SPtr obs1 = std::make_shared<MyObserver>("Observer 1");
MyObserver::SPtr obs2 = std::make_shared<MyObserver>("Observer 2");
// subscribe
osrvbl->subscribe(obs1);
osrvbl->subscribe(obs2);
osrvbl->notify();
// Unsubscribe obs1
osrvbl->unsubscribe(obs1);
osrvbl->notify();
return EXIT_SUCCESS;
}

Member Function Documentation

◆ notify()

template<typename T >
void giri::Observable< T >::notify ( )
inline

Notifies all subscribed Observer objects by calling their update function.

◆ subscribe()

template<typename T >
void giri::Observable< T >::subscribe ( const std::weak_ptr< Observer< T > > &  obs)
inline

Subscribes a Observer.

Parameters
obsObserver to subscribe.

◆ unsubscribe()

template<typename T >
void giri::Observable< T >::unsubscribe ( const std::weak_ptr< Observer< T > > &  obs)
inline

Unsubscribes a Observer.

Parameters
obsObserver to unsubscribe.

◆ unsubscribeAll()

template<typename T >
void giri::Observable< T >::unsubscribeAll ( )
inline

Unsubscribes all subscribed Observers.


The documentation for this class was generated from the following file: