TARAXA
taraxa::util::lazy::Lazy< Provider > Class Template Reference

#include <lazy.hpp>

Collaboration diagram for taraxa::util::lazy::Lazy< Provider >:

Public Types

using val_t = typename remove_reference< decltype((*provider_)())>::type
 

Public Member Functions

 Lazy (Provider const &provider)
 
 Lazy (Provider &&provider)
 
 ~Lazy ()
 
val_tget ()
 
val_t const * get () const
 
val_toperator-> ()
 
val_t const * operator-> () const
 
val_toperator* ()
 
val_t const & operator* () const
 
 operator val_t & ()
 
 operator val_t const & () const
 
template<typename T >
auto & operator[] (T t)
 
template<typename T >
auto const & operator[] (T t) const
 
template<typename T >
auto & operator= (T t)
 

Private Attributes

Provider * provider_ = nullptr
 
val_tval_ptr_ = nullptr
 
mutex mu_
 
bool initializing_ = false
 

Member Typedef Documentation

◆ val_t

template<typename Provider >
using taraxa::util::lazy::Lazy< Provider >::val_t = typename remove_reference<decltype((*provider_)())>::type

Constructor & Destructor Documentation

◆ Lazy() [1/2]

template<typename Provider >
taraxa::util::lazy::Lazy< Provider >::Lazy ( Provider const &  provider)
inline

◆ Lazy() [2/2]

template<typename Provider >
taraxa::util::lazy::Lazy< Provider >::Lazy ( Provider &&  provider)
inline

◆ ~Lazy()

template<typename Provider >
taraxa::util::lazy::Lazy< Provider >::~Lazy ( )
inline

Member Function Documentation

◆ get() [1/2]

template<typename Provider >
val_t* taraxa::util::lazy::Lazy< Provider >::get ( )
inline

◆ get() [2/2]

template<typename Provider >
val_t const* taraxa::util::lazy::Lazy< Provider >::get ( ) const
inline

◆ operator val_t &()

template<typename Provider >
taraxa::util::lazy::Lazy< Provider >::operator val_t & ( )
inline

◆ operator val_t const &()

template<typename Provider >
taraxa::util::lazy::Lazy< Provider >::operator val_t const & ( ) const
inline

◆ operator*() [1/2]

template<typename Provider >
val_t& taraxa::util::lazy::Lazy< Provider >::operator* ( )
inline

◆ operator*() [2/2]

template<typename Provider >
val_t const& taraxa::util::lazy::Lazy< Provider >::operator* ( ) const
inline

◆ operator->() [1/2]

template<typename Provider >
val_t* taraxa::util::lazy::Lazy< Provider >::operator-> ( )
inline

◆ operator->() [2/2]

template<typename Provider >
val_t const* taraxa::util::lazy::Lazy< Provider >::operator-> ( ) const
inline

◆ operator=()

template<typename Provider >
template<typename T >
auto& taraxa::util::lazy::Lazy< Provider >::operator= ( t)
inline

◆ operator[]() [1/2]

template<typename Provider >
template<typename T >
auto& taraxa::util::lazy::Lazy< Provider >::operator[] ( t)
inline

◆ operator[]() [2/2]

template<typename Provider >
template<typename T >
auto const& taraxa::util::lazy::Lazy< Provider >::operator[] ( t) const
inline

Member Data Documentation

◆ initializing_

template<typename Provider >
bool taraxa::util::lazy::Lazy< Provider >::initializing_ = false
private

◆ mu_

template<typename Provider >
mutex taraxa::util::lazy::Lazy< Provider >::mu_
private

◆ provider_

template<typename Provider >
Provider* taraxa::util::lazy::Lazy< Provider >::provider_ = nullptr
private

◆ val_ptr_

template<typename Provider >
val_t* taraxa::util::lazy::Lazy< Provider >::val_ptr_ = nullptr
private

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