26 #ifndef SRC_XRDCL_XRDCLFWD_HH_ 27 #define SRC_XRDCL_XRDCLFWD_HH_ 133 struct Fwd :
protected std::shared_ptr<FwdStorage<T>>
169 explicit Fwd(
const T &value )
171 *this->
get() = value;
179 *this->
get() = std::move( value );
190 *this->
get() = value;
202 *this->
get() = std::move( value );
215 if( !
bool( this->
get()->ptr ) )
throw std::logic_error(
"XrdCl::Fwd contains no value!" );
216 return *this->
get()->ptr;
228 if( !
bool( this->
get()->ptr ) )
throw std::logic_error(
"XrdCl::Fwd contains no value!" );
229 return this->
get()->ptr;
237 return bool( this->
get()->ptr );
244 template<
typename T,
typename... Args>
245 inline std::shared_ptr<FwdStorage<T>>
make_fwd( Args&&... args )
247 return std::make_shared<FwdStorage<T>>( std::forward<Args>( args )... );
~Memory()
Make sure the destrutor of T wont be called.
Definition: XrdClFwd.hh:106
T * ptr
Pointer to the forwarded value.
Definition: XrdClFwd.hh:122
Memory for the value.
Definition: XrdClFwd.hh:96
bool Valid() const
Check if it contains a valid value.
Definition: XrdClFwd.hh:235
Memory()
Make sure the default constructor of T wont be called.
Definition: XrdClFwd.hh:101
Fwd()
Definition: XrdClFwd.hh:141
T * operator->() const
Definition: XrdClFwd.hh:226
Fwd(const Fwd &fwd)
Copy constructor.
Definition: XrdClFwd.hh:148
FwdStorage()
Default constructor.
Definition: XrdClFwd.hh:47
Fwd & operator=(const T &value)
Definition: XrdClFwd.hh:188
FwdStorage(const T &value)
Definition: XrdClFwd.hh:53
Memory storage
The memory for storying forwarded value.
Definition: XrdClFwd.hh:117
Fwd(Fwd &&fwd)
Move constructor.
Definition: XrdClFwd.hh:155
Definition: XrdClAnyObject.hh:25
Fwd(T &&value)
Move construct from value.
Definition: XrdClFwd.hh:177
Fwd & operator=(T &&value)
Definition: XrdClFwd.hh:200
T memory
The memory for storing forwarded value.
Definition: XrdClFwd.hh:111
Fwd(const T &value)
Constructor from value.
Definition: XrdClFwd.hh:169
Fwd(std::shared_ptr< FwdStorage< T >> &&ptr)
Initialize from shared_ptr.
Definition: XrdClFwd.hh:162
FwdStorage(T &&value)
Definition: XrdClFwd.hh:71
std::shared_ptr< FwdStorage< T > > make_fwd(Args &&... args)
Definition: XrdClFwd.hh:245
FwdStorage & operator=(T &&value)
Definition: XrdClFwd.hh:79
Definition: XrdClFwd.hh:42
Definition: XrdClFwd.hh:133
FwdStorage & operator=(const T &value)
Definition: XrdClFwd.hh:61
T & operator*() const
Definition: XrdClFwd.hh:213
~FwdStorage()
Destructor.
Definition: XrdClFwd.hh:88