xrpld
Loading...
Searching...
No Matches
xrpl::STObject::OptionalProxy< T > Class Template Reference

#include <STObject.h>

Inheritance diagram for xrpl::STObject::OptionalProxy< T >:
Collaboration diagram for xrpl::STObject::OptionalProxy< T >:

Public Member Functions

 OptionalProxy (OptionalProxy const &)=default
OptionalProxyoperator= (OptionalProxy const &)=delete
 operator bool () const noexcept
 Returns true if the field is set.
 operator optional_type () const
optional_type operator~ () const
 Explicit conversion to std::optional.
value_type valueOr (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)
value_type value () const
value_type operator* () const
T const * operator-> () const
 Do not use operator->() unless the field is required, or you've checked that it's set.

Protected Member Functions

T const * find () const
template<class U>
void assign (U &&u)

Protected Attributes

STObjectst_
SOEStyle style_
TypedField< T > const * f_

Private Types

using value_type = T::value_type
using optional_type = std::optional<std::decay_t<value_type>>

Private Member Functions

 OptionalProxy (STObject *st, TypedField< T > const *f)
bool engaged () const noexcept
void disengage ()
optional_type optionalValue () 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 xrpl::STObject::OptionalProxy< T >

Definition at line 573 of file STObject.h.

Member Typedef Documentation

◆ value_type

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

Definition at line 576 of file STObject.h.

◆ optional_type

template<class T>
using xrpl::STObject::OptionalProxy< T >::optional_type = std::optional<std::decay_t<value_type>>
private

Definition at line 578 of file STObject.h.

Constructor & Destructor Documentation

◆ OptionalProxy() [1/2]

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

◆ OptionalProxy() [2/2]

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

Definition at line 896 of file STObject.h.

Member Function Documentation

◆ operator=() [1/6]

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

◆ operator bool()

template<class T>
xrpl::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 826 of file STObject.h.

◆ operator optional_type()

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

◆ operator~()

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

Explicit conversion to std::optional.

Definition at line 841 of file STObject.h.

◆ valueOr()

template<class T>
STObject::OptionalProxy< T >::value_type xrpl::STObject::OptionalProxy< T >::valueOr ( value_type val) const
nodiscard

Definition at line 934 of file STObject.h.

◆ operator=() [2/6]

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

Definition at line 848 of file STObject.h.

◆ operator=() [3/6]

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

Definition at line 856 of file STObject.h.

◆ operator=() [4/6]

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

Definition at line 873 of file STObject.h.

◆ operator=() [5/6]

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

◆ engaged()

template<class T>
bool xrpl::STObject::OptionalProxy< T >::engaged ( ) const
nodiscardprivatenoexcept

Definition at line 902 of file STObject.h.

◆ disengage()

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

Definition at line 909 of file STObject.h.

◆ optionalValue()

template<class T>
auto xrpl::STObject::OptionalProxy< T >::optionalValue ( ) const
nodiscardprivate

Definition at line 925 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 > & > xrpl::STObject::OptionalProxy< T >::operator= ( U && u)

Definition at line 889 of file STObject.h.

◆ value()

template<class T>
auto xrpl::STObject::Proxy< T >::value ( ) const
nodiscardinherited

Definition at line 718 of file STObject.h.

◆ operator*()

template<class T>
auto xrpl::STObject::Proxy< T >::operator* ( ) const
inherited

Definition at line 736 of file STObject.h.

◆ operator->()

template<class T>
T const * xrpl::STObject::Proxy< T >::operator-> ( ) const
inherited

Do not use operator->() unless the field is required, or you've checked that it's set.

Definition at line 745 of file STObject.h.

◆ find()

template<class T>
T const * xrpl::STObject::Proxy< T >::find ( ) const
nodiscardprotectedinherited

Definition at line 752 of file STObject.h.

◆ assign()

template<class T>
template<class U>
void xrpl::STObject::Proxy< T >::assign ( U && u)
protectedinherited

Definition at line 760 of file STObject.h.

◆ STObject

template<class T>
friend class STObject
friend

Definition at line 681 of file STObject.h.

◆ operator== [1/5]

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

Definition at line 600 of file STObject.h.

◆ operator== [2/5]

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

Definition at line 606 of file STObject.h.

◆ operator== [3/5]

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

Definition at line 612 of file STObject.h.

◆ operator== [4/5]

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

Definition at line 622 of file STObject.h.

◆ operator== [5/5]

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

Definition at line 628 of file STObject.h.

◆ operator!= [1/5]

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

Definition at line 636 of file STObject.h.

◆ operator!= [2/5]

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

Definition at line 642 of file STObject.h.

◆ operator!= [3/5]

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

Definition at line 648 of file STObject.h.

◆ operator!= [4/5]

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

Definition at line 654 of file STObject.h.

◆ operator!= [5/5]

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

Definition at line 660 of file STObject.h.

Member Data Documentation

◆ st_

template<class T>
STObject* xrpl::STObject::Proxy< T >::st_
protectedinherited

Definition at line 495 of file STObject.h.

◆ style_

template<class T>
SOEStyle xrpl::STObject::Proxy< T >::style_
protectedinherited

Definition at line 496 of file STObject.h.

◆ f_

template<class T>
TypedField<T> const* xrpl::STObject::Proxy< T >::f_
protectedinherited

Definition at line 497 of file STObject.h.