XRootD
Loading...
Searching...
No Matches
XrdCl::FwdStorage< T > Struct Template Reference

#include <XrdClFwd.hh>

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

Classes

union  Memory
 Memory for the value. More...
 

Public Member Functions

 FwdStorage ()
 Default constructor.
 
 FwdStorage (const T &value)
 
 FwdStorage (T &&value)
 
 ~FwdStorage ()
 Destructor.
 
FwdStorageoperator= (const T &value)
 
FwdStorageoperator= (T &&value)
 

Public Attributes

T * ptr
 Pointer to the forwarded value.
 
Memory storage
 The memory for storying forwarded value.
 

Detailed Description

template<typename T>
struct XrdCl::FwdStorage< T >

Helper class for storing forwarded values Allocates memory respectively aligned for T but constructs the object only on assignment.

  • T : type of the value

Definition at line 42 of file XrdClFwd.hh.

Constructor & Destructor Documentation

◆ FwdStorage() [1/3]

template<typename T >
XrdCl::FwdStorage< T >::FwdStorage ( )
inline

Default constructor.

Definition at line 47 of file XrdClFwd.hh.

47: ptr( nullptr ) { }
T * ptr
Pointer to the forwarded value.
Definition XrdClFwd.hh:122

◆ FwdStorage() [2/3]

template<typename T >
XrdCl::FwdStorage< T >::FwdStorage ( const T &  value)
inline

Constructor from T.

Parameters
value: value for forwarding

Definition at line 53 of file XrdClFwd.hh.

53 : ptr( new( &storage.memory ) T( value ) )
54 {
55 }
Memory storage
The memory for storying forwarded value.
Definition XrdClFwd.hh:117
T memory
The memory for storing forwarded value.
Definition XrdClFwd.hh:111

◆ FwdStorage() [3/3]

template<typename T >
XrdCl::FwdStorage< T >::FwdStorage ( T &&  value)
inline

Move constructor from T.

Parameters
value: value for forwarding

Definition at line 71 of file XrdClFwd.hh.

71 : ptr( new( &storage.memory ) T( std::move( value ) ) )
72 {
73 }

◆ ~FwdStorage()

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

Destructor.

Definition at line 88 of file XrdClFwd.hh.

89 {
90 if( ptr ) ptr->~T();
91 }

References XrdCl::FwdStorage< T >::ptr.

Member Function Documentation

◆ operator=() [1/2]

template<typename T >
FwdStorage & XrdCl::FwdStorage< T >::operator= ( const T &  value)
inline

Assignment operator from T

Parameters
value: value for forwarding

Definition at line 61 of file XrdClFwd.hh.

62 {
63 ptr = new( &storage.memory ) T( value );
64 return *this;
65 }

References XrdCl::FwdStorage< T >::Memory::memory, XrdCl::FwdStorage< T >::ptr, and XrdCl::FwdStorage< T >::storage.

◆ operator=() [2/2]

template<typename T >
FwdStorage & XrdCl::FwdStorage< T >::operator= ( T &&  value)
inline

Move assignment operator from T

Parameters
value: value for forwarding

Definition at line 79 of file XrdClFwd.hh.

80 {
81 ptr = new( &storage.memory ) T( std::move( value ) );
82 return *this;
83 }

References XrdCl::FwdStorage< T >::Memory::memory, XrdCl::FwdStorage< T >::ptr, and XrdCl::FwdStorage< T >::storage.

Member Data Documentation

◆ ptr

template<typename T >
T* XrdCl::FwdStorage< T >::ptr

Pointer to the forwarded value.

Definition at line 122 of file XrdClFwd.hh.

Referenced by XrdCl::FwdStorage< T >::~FwdStorage(), XrdCl::FwdStorage< T >::operator=(), and XrdCl::FwdStorage< T >::operator=().

◆ storage

template<typename T >
Memory XrdCl::FwdStorage< T >::storage

The memory for storying forwarded value.

Definition at line 117 of file XrdClFwd.hh.

Referenced by XrdCl::FwdStorage< T >::operator=(), and XrdCl::FwdStorage< T >::operator=().


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