FairRoot/PandaRoot
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
PndFTSInternal::AlignedData< T, Size, _alignment > Class Template Reference

#include <PndFTSArray.h>

Public Member Functions

TConstructAlignedData ()
 
 ~AlignedData ()
 

Private Types

enum  { Alignment = _alignment == PndFTSFullyCacheLineAligned ? 128 : _alignment, PaddedSize = Size * sizeof( T ) + Alignment }
 

Private Member Functions

 PNDFTSARRAY_STATIC_ASSERT_NC ((Alignment &(Alignment-1))==0, alignment_needs_to_be_a_multiple_of_2)
 

Private Attributes

char fUnalignedArray [PaddedSize]
 

Detailed Description

template<typename T, unsigned int Size, int _alignment>
class PndFTSInternal::AlignedData< T, Size, _alignment >

Definition at line 328 of file PndFTSArray.h.

Member Enumeration Documentation

template<typename T, unsigned int Size, int _alignment>
anonymous enum
private
Enumerator
Alignment 
PaddedSize 

Definition at line 344 of file PndFTSArray.h.

344  {
345  Alignment = _alignment == PndFTSFullyCacheLineAligned ? 128 : _alignment,
346  PaddedSize = Size * sizeof( T ) + Alignment
347  };
TTree * T
Definition: anaLmdReco.C:32

Constructor & Destructor Documentation

template<typename T, unsigned int Size, int _alignment>
PndFTSInternal::AlignedData< T, Size, _alignment >::~AlignedData ( )
inline

Definition at line 336 of file PndFTSArray.h.

336  {
337  const int offset = reinterpret_cast<unsigned long>( &fUnalignedArray[0] ) & ( Alignment - 1 );
338  T *mem = reinterpret_cast<T *>( &fUnalignedArray[0] + ( Alignment - offset ) );
339  for ( unsigned int i = 0; i < Size; ++i ) {
340  mem[i].~T();
341  }
342  }
Int_t i
Definition: run_full.C:25
TVector3 offset(2, 0, 0)
TTree * T
Definition: anaLmdReco.C:32
char fUnalignedArray[PaddedSize]
Definition: PndFTSArray.h:350

Member Function Documentation

template<typename T, unsigned int Size, int _alignment>
T* PndFTSInternal::AlignedData< T, Size, _alignment >::ConstructAlignedData ( )
inline

Definition at line 331 of file PndFTSArray.h.

331  {
332  const int offset = reinterpret_cast<unsigned long>( &fUnalignedArray[0] ) & ( Alignment - 1 );
333  void *mem = &fUnalignedArray[0] + ( Alignment - offset );
334  return new( mem ) T[Size];
335  }
TVector3 offset(2, 0, 0)
TTree * T
Definition: anaLmdReco.C:32
char fUnalignedArray[PaddedSize]
Definition: PndFTSArray.h:350
template<typename T, unsigned int Size, int _alignment>
PndFTSInternal::AlignedData< T, Size, _alignment >::PNDFTSARRAY_STATIC_ASSERT_NC ( (Alignment &(Alignment-1))  = =0,
alignment_needs_to_be_a_multiple_of_2   
)
private

Member Data Documentation

template<typename T, unsigned int Size, int _alignment>
char PndFTSInternal::AlignedData< T, Size, _alignment >::fUnalignedArray[PaddedSize]
private

Definition at line 350 of file PndFTSArray.h.


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