Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
Scroom::Utils::Detail::Registration< T > Class Template Reference

#include <observable.hh>

Collaboration diagram for Scroom::Utils::Detail::Registration< T >:
Collaboration graph

Public Types

using Ptr = std::shared_ptr< Registration< T > >
 

Public Member Functions

 Registration ()=default
 
 Registration (std::weak_ptr< Observable< T > > observable, std::shared_ptr< T > observer)
 
 Registration (std::weak_ptr< Observable< T > > observable, std::weak_ptr< T > observer)
 
void set (std::shared_ptr< T > observer)
 
void set (std::weak_ptr< T > observer)
 

Static Public Member Functions

static Ptr create (std::weak_ptr< Observable< T > > observable, std::shared_ptr< T > observer)
 
static Ptr create (std::weak_ptr< Observable< T > > observable, std::weak_ptr< T > observer)
 

Public Attributes

std::weak_ptr< Observable< T > > observable
 
std::shared_ptr< T > o
 
std::weak_ptr< T > observer
 

Detailed Description

template<typename T>
class Scroom::Utils::Detail::Registration< T >

Contain all info regarding the registration.

Performs de-registration on destruction

Member Typedef Documentation

◆ Ptr

template<typename T >
using Scroom::Utils::Detail::Registration< T >::Ptr = std::shared_ptr<Registration<T> >

Constructor & Destructor Documentation

◆ Registration() [1/3]

template<typename T >
Scroom::Utils::Detail::Registration< T >::Registration ( )
default

◆ Registration() [2/3]

template<typename T >
Scroom::Utils::Detail::Registration< T >::Registration ( std::weak_ptr< Observable< T > >  observable,
std::shared_ptr< T >  observer 
)
124 : observable(std::move(observable_))
125 , o(std::move(observer_))
126 , observer(o)
127 {
128 }
std::weak_ptr< Observable< T > > observable
Definition observable.hh:36
std::weak_ptr< T > observer
Definition observable.hh:38
std::shared_ptr< T > o
Definition observable.hh:37

◆ Registration() [3/3]

template<typename T >
Scroom::Utils::Detail::Registration< T >::Registration ( std::weak_ptr< Observable< T > >  observable,
std::weak_ptr< T >  observer 
)
132 : observable(std::move(observable_))
133 , o()
134 , observer(std::move(observer_))
135 {
136 // We don't want to store a "hard" reference, so field o is intentionally empty.
137 }

Member Function Documentation

◆ create() [1/2]

template<typename T >
Detail::Registration< T >::Ptr Scroom::Utils::Detail::Registration< T >::create ( std::weak_ptr< Observable< T > >  observable,
std::shared_ptr< T >  observer 
)
static
157 {
158 return typename Detail::Registration<T>::Ptr(new Detail::Registration<T>(std::move(observable), std::move(observer)));
159 }
std::shared_ptr< Registration< T > > Ptr
Definition observable.hh:40

Referenced by Scroom::Utils::Observable< T >::registerObserver(), and Scroom::Utils::Observable< T >::registerStrongObserver().

Here is the caller graph for this function:

◆ create() [2/2]

template<typename T >
Detail::Registration< T >::Ptr Scroom::Utils::Detail::Registration< T >::create ( std::weak_ptr< Observable< T > >  observable,
std::weak_ptr< T >  observer 
)
static
164 {
165 return typename Detail::Registration<T>::Ptr(new Detail::Registration<T>(std::move(observable), std::move(observer)));
166 }

◆ set() [1/2]

template<typename T >
void Scroom::Utils::Detail::Registration< T >::set ( std::shared_ptr< T >  observer)
141 {
142 o = std::move(observer_);
143 observer = o;
144 }

◆ set() [2/2]

template<typename T >
void Scroom::Utils::Detail::Registration< T >::set ( std::weak_ptr< T >  observer)
148 {
149 // We don't want to store a "hard" reference, so field o is intentionally empty.
150 o.reset();
151 observer = std::move(observer_);
152 }

Member Data Documentation

◆ o

template<typename T >
std::shared_ptr<T> Scroom::Utils::Detail::Registration< T >::o

Reference to the observer (for non-weak registrations)

◆ observable

template<typename T >
std::weak_ptr<Observable<T> > Scroom::Utils::Detail::Registration< T >::observable

◆ observer

template<typename T >
std::weak_ptr<T> Scroom::Utils::Detail::Registration< T >::observer

Reference to the observer


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