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 )... );
Definition XrdClAction.hh:34
std::shared_ptr< FwdStorage< T > > make_fwd(Args &&... args)
Definition XrdClFwd.hh:245
Definition XrdOucJson.hh:4517
Definition XrdClFwd.hh:43
FwdStorage & operator=(const T &value)
Definition XrdClFwd.hh:61
Memory storage
The memory for storying forwarded value.
Definition XrdClFwd.hh:117
~FwdStorage()
Destructor.
Definition XrdClFwd.hh:88
FwdStorage(const T &value)
Definition XrdClFwd.hh:53
FwdStorage(T &&value)
Definition XrdClFwd.hh:71
FwdStorage()
Default constructor.
Definition XrdClFwd.hh:47
T * ptr
Pointer to the forwarded value.
Definition XrdClFwd.hh:122
FwdStorage & operator=(T &&value)
Definition XrdClFwd.hh:79
Definition XrdClFwd.hh:134
Fwd & operator=(T &&value)
Definition XrdClFwd.hh:200
Fwd()
Definition XrdClFwd.hh:141
Fwd(Fwd &&fwd)
Move constructor.
Definition XrdClFwd.hh:155
Fwd(const Fwd &fwd)
Copy constructor.
Definition XrdClFwd.hh:148
Fwd(std::shared_ptr< FwdStorage< T > > &&ptr)
Initialize from shared_ptr.
Definition XrdClFwd.hh:162
Fwd(const T &value)
Constructor from value.
Definition XrdClFwd.hh:169
T & operator*() const
Definition XrdClFwd.hh:213
T * operator->() const
Definition XrdClFwd.hh:226
bool Valid() const
Check if it contains a valid value.
Definition XrdClFwd.hh:235
Fwd(T &&value)
Move construct from value.
Definition XrdClFwd.hh:177
Fwd & operator=(const T &value)
Definition XrdClFwd.hh:188
Memory for the value.
Definition XrdClFwd.hh:97
~Memory()
Make sure the destrutor of T won't be called.
Definition XrdClFwd.hh:106
T memory
The memory for storing forwarded value.
Definition XrdClFwd.hh:111
Memory()
Make sure the default constructor of T won't be called.
Definition XrdClFwd.hh:101