XRootD
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. More...
 
 FwdStorage (const T &value)
 
 FwdStorage (T &&value)
 
 ~FwdStorage ()
 Destructor. More...
 
FwdStorageoperator= (const T &value)
 
FwdStorageoperator= (T &&value)
 

Public Attributes

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

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(), 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=().


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