rippled
Public Member Functions | Private Types | Private Member Functions | Friends | List of all members
ripple::STObject::OptionalProxy< T > Class Template Reference

Public Member Functions

 OptionalProxy (OptionalProxy const &)=default
 
OptionalProxyoperator= (OptionalProxy const &)=delete
 
 operator bool () const noexcept
 Returns true if the field is set. More...
 
value_type operator* () const
 Return the contained value. More...
 
 operator optional_type () const
 
optional_type operator~ () const
 Explicit conversion to std::optional. More...
 
value_type value_or (value_type val) const
 
OptionalProxyoperator= (std::nullopt_t const &)
 
OptionalProxyoperator= (optional_type &&v)
 
OptionalProxyoperator= (optional_type const &v)
 
template<class U >
std::enable_if_t< std::is_assignable_v< T, U >, OptionalProxy & > operator= (U &&u)
 
template<class U >
std::enable_if_t< std::is_assignable_v< T, U >, STObject::OptionalProxy< T > & > operator= (U &&u)
 

Private Types

using value_type = typename T::value_type
 
using optional_type = std::optional< typename std::decay< value_type >::type >
 

Private Member Functions

 OptionalProxy (STObject *st, TypedField< T > const *f)
 
bool engaged () const noexcept
 
void disengage ()
 
optional_type optional_value () const
 

Friends

class STObject
 
bool operator== (OptionalProxy const &lhs, std::nullopt_t) noexcept
 
bool operator== (std::nullopt_t, OptionalProxy const &rhs) noexcept
 
bool operator== (OptionalProxy const &lhs, optional_type const &rhs) noexcept
 
bool operator== (optional_type const &lhs, OptionalProxy const &rhs) noexcept
 
bool operator== (OptionalProxy const &lhs, OptionalProxy const &rhs) noexcept
 
bool operator!= (OptionalProxy const &lhs, std::nullopt_t) noexcept
 
bool operator!= (std::nullopt_t, OptionalProxy const &rhs) noexcept
 
bool operator!= (OptionalProxy const &lhs, optional_type const &rhs) noexcept
 
bool operator!= (optional_type const &lhs, OptionalProxy const &rhs) noexcept
 
bool operator!= (OptionalProxy const &lhs, OptionalProxy const &rhs) noexcept
 

Detailed Description

template<class T>
class ripple::STObject::OptionalProxy< T >

Definition at line 59 of file STObject.h.

Member Typedef Documentation

◆ value_type

template<class T >
using ripple::STObject::OptionalProxy< T >::value_type = typename T::value_type
private

Definition at line 516 of file STObject.h.

◆ optional_type

template<class T >
using ripple::STObject::OptionalProxy< T >::optional_type = std::optional<typename std::decay<value_type>::type>
private

Definition at line 518 of file STObject.h.

Constructor & Destructor Documentation

◆ OptionalProxy() [1/2]

template<class T >
ripple::STObject::OptionalProxy< T >::OptionalProxy ( OptionalProxy< T > const &  )
default

◆ OptionalProxy() [2/2]

template<class T >
ripple::STObject::OptionalProxy< T >::OptionalProxy ( STObject st,
TypedField< T > const *  f 
)
private

Definition at line 802 of file STObject.h.

Member Function Documentation

◆ operator=() [1/6]

template<class T >
OptionalProxy& ripple::STObject::OptionalProxy< T >::operator= ( OptionalProxy< T > const &  )
delete

◆ operator bool()

template<class T >
ripple::STObject::OptionalProxy< T >::operator bool ( ) const
explicitnoexcept

Returns true if the field is set.

Fields with soeDEFAULT and set to the default value will return true

Definition at line 736 of file STObject.h.

◆ operator*()

template<class T >
auto ripple::STObject::OptionalProxy< T >::operator* ( ) const

Return the contained value.

Throws:

STObject::FieldErr if !engaged()

Definition at line 743 of file STObject.h.

◆ operator optional_type()

template<class T >
ripple::STObject::OptionalProxy< T >::operator optional_type ( ) const

◆ operator~()

template<class T >
STObject::OptionalProxy< T >::optional_type ripple::STObject::OptionalProxy< T >::operator~ ( ) const

Explicit conversion to std::optional.

Definition at line 757 of file STObject.h.

◆ value_or()

template<class T >
STObject::OptionalProxy< T >::value_type ripple::STObject::OptionalProxy< T >::value_or ( value_type  val) const

Definition at line 838 of file STObject.h.

◆ operator=() [2/6]

template<class T >
auto ripple::STObject::OptionalProxy< T >::operator= ( std::nullopt_t const &  )

Definition at line 764 of file STObject.h.

◆ operator=() [3/6]

template<class T >
auto ripple::STObject::OptionalProxy< T >::operator= ( optional_type &&  v)

Definition at line 772 of file STObject.h.

◆ operator=() [4/6]

template<class T >
auto ripple::STObject::OptionalProxy< T >::operator= ( optional_type const &  v)

Definition at line 783 of file STObject.h.

◆ operator=() [5/6]

template<class T >
template<class U >
std::enable_if_t<std::is_assignable_v<T, U>, OptionalProxy&> ripple::STObject::OptionalProxy< T >::operator= ( U &&  u)

◆ engaged()

template<class T >
bool ripple::STObject::OptionalProxy< T >::engaged ( ) const
privatenoexcept

Definition at line 809 of file STObject.h.

◆ disengage()

template<class T >
void ripple::STObject::OptionalProxy< T >::disengage ( )
private

Definition at line 816 of file STObject.h.

◆ optional_value()

template<class T >
auto ripple::STObject::OptionalProxy< T >::optional_value ( ) const
private

Definition at line 829 of file STObject.h.

◆ operator=() [6/6]

template<class T >
template<class U >
std::enable_if_t<std::is_assignable_v<T, U>, STObject::OptionalProxy<T>&> ripple::STObject::OptionalProxy< T >::operator= ( U &&  u)

Definition at line 795 of file STObject.h.

Friends And Related Function Documentation

◆ STObject

template<class T >
friend class STObject
friend

Definition at line 629 of file STObject.h.

◆ operator== [1/5]

template<class T >
bool operator== ( OptionalProxy< T > const &  lhs,
std::nullopt_t   
)
friend

Definition at line 548 of file STObject.h.

◆ operator== [2/5]

template<class T >
bool operator== ( std::nullopt_t  ,
OptionalProxy< T > const &  rhs 
)
friend

Definition at line 554 of file STObject.h.

◆ operator== [3/5]

template<class T >
bool operator== ( OptionalProxy< T > const &  lhs,
optional_type const &  rhs 
)
friend

Definition at line 560 of file STObject.h.

◆ operator== [4/5]

template<class T >
bool operator== ( optional_type const &  lhs,
OptionalProxy< T > const &  rhs 
)
friend

Definition at line 570 of file STObject.h.

◆ operator== [5/5]

template<class T >
bool operator== ( OptionalProxy< T > const &  lhs,
OptionalProxy< T > const &  rhs 
)
friend

Definition at line 576 of file STObject.h.

◆ operator!= [1/5]

template<class T >
bool operator!= ( OptionalProxy< T > const &  lhs,
std::nullopt_t   
)
friend

Definition at line 584 of file STObject.h.

◆ operator!= [2/5]

template<class T >
bool operator!= ( std::nullopt_t  ,
OptionalProxy< T > const &  rhs 
)
friend

Definition at line 590 of file STObject.h.

◆ operator!= [3/5]

template<class T >
bool operator!= ( OptionalProxy< T > const &  lhs,
optional_type const &  rhs 
)
friend

Definition at line 596 of file STObject.h.

◆ operator!= [4/5]

template<class T >
bool operator!= ( optional_type const &  lhs,
OptionalProxy< T > const &  rhs 
)
friend

Definition at line 602 of file STObject.h.

◆ operator!= [5/5]

template<class T >
bool operator!= ( OptionalProxy< T > const &  lhs,
OptionalProxy< T > const &  rhs 
)
friend

Definition at line 608 of file STObject.h.