All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Attributes | List of all members
details::PointerToData_t< T > Class Template Reference

Public Types

using value_type = T
 
using const_value_type = std::add_const_t< value_type >
 
using reference = std::add_lvalue_reference_t< value_type >
 
using const_reference = std::add_lvalue_reference_t< const_value_type >
 
using pointer = std::add_pointer_t< value_type >
 
using const_pointer = std::add_pointer_t< const_value_type >
 

Public Member Functions

 ~PointerToData_t ()
 Destructor: gets rid of the owned data. More...
 
 operator bool () const
 Returns whether we point to something. More...
 
bool operator! () const
 Returns whether we point to nothing. More...
 
bool hasData () const
 Returns whether we have data. More...
 
bool owned () const
 Returns whether we have data and we own it. More...
 
void SetData (pointer data, bool owned)
 Sets the data and the ownership. More...
 
void AcquireData (pointer data)
 Acquire ownership of the specified data. More...
 
void PointToData (pointer data)
 Point to the specified data, not acquiring ownership. More...
 
void PointToData (reference data)
 Point to the specified data, not acquiring ownership. More...
 
void StealData (std::remove_const_t< T > &&data)
 Move data from the specified object, and own it. More...
 
void NewData (T const &data)
 Create a owned copy of the specified object. More...
 
void Clear ()
 Stop pointing to the data; if owned, delete it. More...
 
Dereferencing
const_reference operator* () const
 
reference operator* ()
 
const_pointer operator-> () const
 
pointer operator-> ()
 

Protected Attributes

bool bOwned = false
 whether we own our data More...
 
pointer pData = nullptr
 pointer to data More...
 

Detailed Description

template<typename T>
class details::PointerToData_t< T >

Todo:
Document this code and make it into a library

Definition at line 108 of file RawDataDrawer.cxx.

Member Typedef Documentation

template<typename T >
using details::PointerToData_t< T >::const_pointer = std::add_pointer_t<const_value_type>

Definition at line 115 of file RawDataDrawer.cxx.

template<typename T >
using details::PointerToData_t< T >::const_reference = std::add_lvalue_reference_t<const_value_type>

Definition at line 113 of file RawDataDrawer.cxx.

template<typename T >
using details::PointerToData_t< T >::const_value_type = std::add_const_t<value_type>

Definition at line 111 of file RawDataDrawer.cxx.

template<typename T >
using details::PointerToData_t< T >::pointer = std::add_pointer_t<value_type>

Definition at line 114 of file RawDataDrawer.cxx.

template<typename T >
using details::PointerToData_t< T >::reference = std::add_lvalue_reference_t<value_type>

Definition at line 112 of file RawDataDrawer.cxx.

template<typename T >
using details::PointerToData_t< T >::value_type = T

Definition at line 110 of file RawDataDrawer.cxx.

Constructor & Destructor Documentation

template<typename T >
details::PointerToData_t< T >::~PointerToData_t ( )
inline

Destructor: gets rid of the owned data.

Definition at line 118 of file RawDataDrawer.cxx.

118 { Clear(); }
void Clear()
Stop pointing to the data; if owned, delete it.

Member Function Documentation

template<typename T >
void details::PointerToData_t< T >::AcquireData ( pointer  data)
inline

Acquire ownership of the specified data.

Definition at line 159 of file RawDataDrawer.cxx.

160  {
161  SetData(data, true);
162  }
void SetData(pointer data, bool owned)
Sets the data and the ownership.
template<typename T >
void details::PointerToData_t< T >::Clear ( )
inline

Stop pointing to the data; if owned, delete it.

Definition at line 189 of file RawDataDrawer.cxx.

190  {
191  if (bOwned) delete pData;
192  pData = nullptr;
193  bOwned = false;
194  } // Clear()
bool bOwned
whether we own our data
pointer pData
pointer to data
template<typename T >
bool details::PointerToData_t< T >::hasData ( ) const
inline

Returns whether we have data.

Definition at line 137 of file RawDataDrawer.cxx.

138  {
139  return bool(pData);
140  }
static constexpr bool
pointer pData
pointer to data
template<typename T >
void details::PointerToData_t< T >::NewData ( T const &  data)
inline

Create a owned copy of the specified object.

Definition at line 183 of file RawDataDrawer.cxx.

184  {
185  AcquireData(new T(data));
186  }
void AcquireData(pointer data)
Acquire ownership of the specified data.
template<typename T >
details::PointerToData_t< T >::operator bool ( ) const
inline

Returns whether we point to something.

Definition at line 130 of file RawDataDrawer.cxx.

130 { return hasData(); }
bool hasData() const
Returns whether we have data.
template<typename T >
bool details::PointerToData_t< T >::operator! ( ) const
inline

Returns whether we point to nothing.

Definition at line 133 of file RawDataDrawer.cxx.

133 { return !hasData(); }
bool hasData() const
Returns whether we have data.
template<typename T >
const_reference details::PointerToData_t< T >::operator* ( ) const
inline

Definition at line 122 of file RawDataDrawer.cxx.

122 { return *pData; }
pointer pData
pointer to data
template<typename T >
reference details::PointerToData_t< T >::operator* ( )
inline

Definition at line 123 of file RawDataDrawer.cxx.

123 { return *pData; }
pointer pData
pointer to data
template<typename T >
const_pointer details::PointerToData_t< T >::operator-> ( ) const
inline

Definition at line 125 of file RawDataDrawer.cxx.

125 { return pData; }
pointer pData
pointer to data
template<typename T >
pointer details::PointerToData_t< T >::operator-> ( )
inline

Definition at line 126 of file RawDataDrawer.cxx.

126 { return pData; }
pointer pData
pointer to data
template<typename T >
bool details::PointerToData_t< T >::owned ( ) const
inline

Returns whether we have data and we own it.

Definition at line 144 of file RawDataDrawer.cxx.

145  {
146  return bOwned && hasData();
147  }
bool bOwned
whether we own our data
bool hasData() const
Returns whether we have data.
template<typename T >
void details::PointerToData_t< T >::PointToData ( pointer  data)
inline

Point to the specified data, not acquiring ownership.

Definition at line 165 of file RawDataDrawer.cxx.

166  {
167  SetData(data, false);
168  }
void SetData(pointer data, bool owned)
Sets the data and the ownership.
template<typename T >
void details::PointerToData_t< T >::PointToData ( reference  data)
inline

Point to the specified data, not acquiring ownership.

Definition at line 171 of file RawDataDrawer.cxx.

172  {
173  SetData(&data, false);
174  }
void SetData(pointer data, bool owned)
Sets the data and the ownership.
template<typename T >
void details::PointerToData_t< T >::SetData ( pointer  data,
bool  owned 
)
inline

Sets the data and the ownership.

Definition at line 151 of file RawDataDrawer.cxx.

152  {
153  Clear();
154  bOwned = owned;
155  pData = data;
156  }
bool bOwned
whether we own our data
pointer pData
pointer to data
void Clear()
Stop pointing to the data; if owned, delete it.
bool owned() const
Returns whether we have data and we own it.
template<typename T >
void details::PointerToData_t< T >::StealData ( std::remove_const_t< T > &&  data)
inline

Move data from the specified object, and own it.

Definition at line 177 of file RawDataDrawer.cxx.

178  {
179  AcquireData(new T(std::move(data)));
180  }
void AcquireData(pointer data)
Acquire ownership of the specified data.

Member Data Documentation

template<typename T >
bool details::PointerToData_t< T >::bOwned = false
protected

whether we own our data

Definition at line 197 of file RawDataDrawer.cxx.

template<typename T >
pointer details::PointerToData_t< T >::pData = nullptr
protected

pointer to data

Definition at line 198 of file RawDataDrawer.cxx.


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