XRootD
Loading...
Searching...
No Matches
XrdCl::Optional< T > Class Template Reference

#include <XrdClOptional.hh>

+ Collaboration diagram for XrdCl::Optional< T >:

Public Member Functions

 Optional (const None &n=none)
 Default constructor.
 
 Optional (const Optional &opt)
 Copy constructor.
 
 Optional (const T &t)
 Constructor for value.
 
 Optional (Optional &&opt)
 Move constructor.
 
 ~Optional ()
 
 operator bool () const
 Conversion to boolean.
 
T & operator* ()
 Dereference operator.
 
const T & operator* () const
 Dereference operator.
 
Optionaloperator= (const Optional &opt)
 Copy assignment operator.
 
Optionaloperator= (Optional &&opt)
 Move assignment operator.
 

Detailed Description

template<typename T>
class XrdCl::Optional< T >

The Optional class

  • T : type of the optional parameter

Definition at line 43 of file XrdClOptional.hh.

Constructor & Destructor Documentation

◆ Optional() [1/4]

template<typename T >
XrdCl::Optional< T >::Optional ( const T &  t)
inline

Constructor for value.

Definition at line 50 of file XrdClOptional.hh.

50 : optional( false )
51 {
52 new( &memory.value ) T( t );
53 }

◆ Optional() [2/4]

template<typename T >
XrdCl::Optional< T >::Optional ( const None n = none)
inline

Default constructor.

Definition at line 58 of file XrdClOptional.hh.

58 : optional( true )
59 {
60 (void)n;
61 }

◆ Optional() [3/4]

template<typename T >
XrdCl::Optional< T >::Optional ( const Optional< T > &  opt)
inline

Copy constructor.

Definition at line 66 of file XrdClOptional.hh.

66 : optional( opt.optional )
67 {
68 if( !optional ) new( &memory.value ) T( opt.memory.value );
69 }

◆ Optional() [4/4]

template<typename T >
XrdCl::Optional< T >::Optional ( Optional< T > &&  opt)
inline

Move constructor.

Definition at line 74 of file XrdClOptional.hh.

74 : optional( opt.optional )
75 {
76 if( !optional ) new( &memory.value ) T( std::move( opt.memory.value ) );
77 }

◆ ~Optional()

template<typename T >
XrdCl::Optional< T >::~Optional ( )
inline

Definition at line 82 of file XrdClOptional.hh.

83 {
84 if( optional ) memory.value.~T();
85 }

Member Function Documentation

◆ operator bool()

template<typename T >
XrdCl::Optional< T >::operator bool ( ) const
inline

Conversion to boolean.

Definition at line 116 of file XrdClOptional.hh.

117 {
118 return optional;
119 }

◆ operator*() [1/2]

template<typename T >
T & XrdCl::Optional< T >::operator* ( )
inline

Dereference operator.

Definition at line 124 of file XrdClOptional.hh.

125 {
126 return memory.value;
127 }

◆ operator*() [2/2]

template<typename T >
const T & XrdCl::Optional< T >::operator* ( ) const
inline

Dereference operator.

Definition at line 132 of file XrdClOptional.hh.

133 {
134 return memory.value;
135 }

◆ operator=() [1/2]

template<typename T >
Optional & XrdCl::Optional< T >::operator= ( const Optional< T > &  opt)
inline

Copy assignment operator.

Definition at line 90 of file XrdClOptional.hh.

91 {
92 if( this != &opt )
93 {
94 optional = opt.optional;
95 if( !optional ) memory.value = opt.memory.value;
96 }
97 return *this;
98 }

◆ operator=() [2/2]

template<typename T >
Optional & XrdCl::Optional< T >::operator= ( Optional< T > &&  opt)
inline

Move assignment operator.

Definition at line 103 of file XrdClOptional.hh.

104 {
105 if( this != &opt )
106 {
107 optional = opt.optional;
108 if( !optional ) memory.value = std::move( opt.memory.value );
109 }
110 return *this;
111 }

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