CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes
edm::soa::Table< Args > Class Template Reference

#include <Table.h>

Classes

struct  CtrFillerFromAOS
 
struct  CtrFillerFromContainers
 

Public Types

using const_iterator = ConstTableItr< Args... >
 
using iterator = TableItr< Args... >
 
using Layout = std::tuple< Args... >
 

Public Member Functions

const_iterator begin () const
 
iterator begin ()
 
template<typename U >
ColumnValues< typename U::typecolumn () const
 
template<typename U >
MutableColumnValues< typename U::typecolumn ()
 
void const * columnAddressByIndex (unsigned int iIndex) const
 
template<typename U >
void const * columnAddressWorkaround (U const *) const
 
const_iterator end () const
 
iterator end ()
 
template<typename U >
U::type const & get (size_t iRow) const
 
template<typename U >
U::typeget (size_t iRow)
 
Table< Args... > & operator= (Table< Args... > &&iOther)
 
Table< Args... > & operator= (Table< Args... > const &iOther)
 
void resize (unsigned int iNewSize)
 
RowView< Args... > row (size_t iRow) const
 
MutableRowView< Args... > row (size_t iRow)
 
unsigned int size () const
 
template<typename T , typename... CArgs>
 Table (T const &iContainer, CArgs...iArgs)
 
template<typename T , typename... CArgs>
 Table (T const &iContainer, ColumnFillers< CArgs... > iFiller)
 
 Table (Table< Args... > const &iOther)
 
 Table (Table< Args... > &&iOther)
 
 Table ()
 
 ~Table ()
 

Static Public Attributes

static constexpr const unsigned int kNColumns = sizeof...(Args)
 

Private Member Functions

template<typename U >
void const * columnAddress () const
 
template<typename U >
void * columnAddress ()
 

Static Private Member Functions

template<int I>
static void copyFromToWithResize (size_t iNElements, std::array< void *, sizeof...(Args)> const &iFrom, std::array< void *, sizeof...(Args)> &oTo, std::true_type)
 
template<int I>
static void copyFromToWithResize (size_t, std::array< void *, sizeof...(Args)> const &, std::array< void *, sizeof...(Args)> &, std::false_type)
 
template<int I>
static void dtr (std::array< void *, sizeof...(Args)> &iArray, std::true_type)
 
template<int I>
static void dtr (std::array< void *, sizeof...(Args)> &iArray, std::false_type)
 
template<int I>
static void resetStartingAt (size_t iStartIndex, size_t iEndIndex, std::array< void *, sizeof...(Args)> &ioArray, std::true_type)
 
template<int I>
static void resetStartingAt (size_t, size_t, std::array< void *, sizeof...(Args)> &, std::false_type)
 
template<int I>
static void resizeFromTo (size_t iOldSize, size_t iNewSize, std::array< void *, sizeof...(Args)> &ioArray, std::true_type)
 
template<int I>
static void resizeFromTo (size_t, size_t, std::array< void *, sizeof...(Args)> &, std::false_type)
 

Private Attributes

unsigned int m_size = 0
 
std::array< void *, sizeof...(Args)> m_values = {{nullptr}}
 

Detailed Description

template<typename... Args>
class edm::soa::Table< Args >

Definition at line 133 of file Table.h.

Member Typedef Documentation

template<typename... Args>
using edm::soa::Table< Args >::const_iterator = ConstTableItr<Args...>

Definition at line 137 of file Table.h.

template<typename... Args>
using edm::soa::Table< Args >::iterator = TableItr<Args...>

Definition at line 138 of file Table.h.

template<typename... Args>
using edm::soa::Table< Args >::Layout = std::tuple<Args...>

Definition at line 136 of file Table.h.

Constructor & Destructor Documentation

template<typename... Args>
template<typename T , typename... CArgs>
edm::soa::Table< Args >::Table ( T const &  iContainer,
CArgs...  iArgs 
)
inline

Definition at line 141 of file Table.h.

References lumiContext::fill, edm::soa::Table< Args >::m_size, and edm::soa::Table< Args >::m_values.

141  : m_size(iContainer.size()) {
142  using CtrChoice = std::conditional_t<sizeof...(CArgs)==0,
143  CtrFillerFromAOS,
144  CtrFillerFromContainers>;
145  m_size = CtrChoice::fill(m_values,iContainer,std::forward<CArgs>(iArgs)...);
146  }
unsigned int m_size
Definition: Table.h:238
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
template<typename T , typename... CArgs>
edm::soa::Table< Args >::Table ( T const &  iContainer,
ColumnFillers< CArgs... >  iFiller 
)
inline

Definition at line 149 of file Table.h.

References edm::soa::Table< Args >::CtrFillerFromAOS::fillUsingFiller(), edm::soa::Table< Args >::m_size, and edm::soa::Table< Args >::m_values.

149  {
150  m_size = iContainer.size();
151  CtrFillerFromAOS::fillUsingFiller(iFiller,m_values, iContainer);
152  }
unsigned int m_size
Definition: Table.h:238
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
static size_t fillUsingFiller(F &iFiller, std::array< void *, sizeof...(Args)> &oValues, T const &iContainer)
Definition: Table.h:306
template<typename... Args>
edm::soa::Table< Args >::Table ( Table< Args... > const &  iOther)
inline

Definition at line 154 of file Table.h.

References edm::soa::Table< Args >::m_size, and edm::soa::Table< Args >::m_values.

154  :m_size(iOther.m_size), m_values{{nullptr}} {
155  copyFromToWithResize<0>(m_size,iOther.m_values,m_values,std::true_type{});
156  }
unsigned int m_size
Definition: Table.h:238
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
edm::soa::Table< Args >::Table ( Table< Args... > &&  iOther)
inline

Definition at line 158 of file Table.h.

References edm::soa::Table< Args >::m_size, edm::soa::Table< Args >::m_values, and std::swap().

158  :m_size(0), m_values{{nullptr}} {
159  std::swap(m_size,iOther.m_size);
160  std::swap(m_values,iOther.m_values);
161  }
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
unsigned int m_size
Definition: Table.h:238
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
edm::soa::Table< Args >::Table ( )
inline

Definition at line 163 of file Table.h.

163  : m_size(0) {
164  }
unsigned int m_size
Definition: Table.h:238
template<typename... Args>
edm::soa::Table< Args >::~Table ( )
inline

Definition at line 166 of file Table.h.

References edm::soa::Table< Args >::m_values.

166  {
167  dtr<0>(m_values, std::true_type{});
168  }
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239

Member Function Documentation

template<typename... Args>
const_iterator edm::soa::Table< Args >::begin ( void  ) const
inline

Definition at line 219 of file Table.h.

References edm::soa::Table< Args >::m_values.

Referenced by edm::soa::Table< Args >::row().

219 { return const_iterator{m_values}; }
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
ConstTableItr< Args... > const_iterator
Definition: Table.h:137
template<typename... Args>
iterator edm::soa::Table< Args >::begin ( void  )
inline

Definition at line 222 of file Table.h.

References edm::soa::Table< Args >::m_values.

222 { return iterator{m_values}; }
TableItr< Args... > iterator
Definition: Table.h:138
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
template<typename U >
ColumnValues<typename U::type> edm::soa::Table< Args >::column ( ) const
inline

Definition at line 204 of file Table.h.

References edm::soa::Table< Args >::m_size.

204  {
205  return ColumnValues<typename U::type>{static_cast<typename U::type*>(columnAddress<U>()), m_size};
206  }
type
Definition: HCALResponse.h:21
unsigned int m_size
Definition: Table.h:238
template<typename... Args>
template<typename U >
MutableColumnValues<typename U::type> edm::soa::Table< Args >::column ( )
inline

Definition at line 208 of file Table.h.

References edm::soa::Table< Args >::m_size.

208  {
209  return MutableColumnValues<typename U::type>{static_cast<typename U::type*>(columnAddress<U>()), m_size};
210  }
type
Definition: HCALResponse.h:21
unsigned int m_size
Definition: Table.h:238
template<typename... Args>
template<typename U >
void const* edm::soa::Table< Args >::columnAddress ( ) const
inlineprivate

Definition at line 242 of file Table.h.

References edm::soa::Table< Args >::m_values.

242  {
244  }
static constexpr int index
Definition: tablehelpers.h:39
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
template<typename U >
void* edm::soa::Table< Args >::columnAddress ( )
inlineprivate

Definition at line 247 of file Table.h.

References edm::soa::Table< Args >::m_values.

247  {
249  }
static constexpr int index
Definition: tablehelpers.h:39
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
void const* edm::soa::Table< Args >::columnAddressByIndex ( unsigned int  iIndex) const
inline

Definition at line 231 of file Table.h.

References edm::soa::Table< Args >::m_values.

231  {
232  return m_values[iIndex];
233  }
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
template<typename U >
void const* edm::soa::Table< Args >::columnAddressWorkaround ( U const *  ) const
inline

Definition at line 227 of file Table.h.

227  {
228  return columnAddress<U>();
229  }
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::copyFromToWithResize ( size_t  iNElements,
std::array< void *, sizeof...(Args)> const &  iFrom,
std::array< void *, sizeof...(Args)> &  oTo,
std::true_type   
)
inlinestaticprivate

Definition at line 363 of file Table.h.

References popcon2dropbox::copy(), and Exhume::I.

363  {
364  using Layout = std::tuple<Args...>;
366  Type* oldPtr = static_cast<Type*>(oTo[I]);
367  Type* ptr = new Type[iNElements];
368  oTo[I]=ptr;
369  std::copy(static_cast<Type const*>(iFrom[I]), static_cast<Type const*>(iFrom[I])+iNElements, ptr);
370  delete [] oldPtr;
371  copyFromToWithResize<I+1>(iNElements, iFrom, oTo, std::conditional_t<I+1 == sizeof...(Args), std::false_type, std::true_type>{} );
372  }
type
Definition: HCALResponse.h:21
std::tuple< Args... > Layout
Definition: Table.h:136
const std::complex< double > I
Definition: I.h:8
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::copyFromToWithResize ( size_t  ,
std::array< void *, sizeof...(Args)> const &  ,
std::array< void *, sizeof...(Args)> &  ,
std::false_type   
)
inlinestaticprivate

Definition at line 374 of file Table.h.

374 {}
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::dtr ( std::array< void *, sizeof...(Args)> &  iArray,
std::true_type   
)
inlinestaticprivate

Definition at line 253 of file Table.h.

References Exhume::I.

253  {
255  delete [] static_cast<Type*>(iArray[I]);
256  dtr<I+1>(iArray,std::conditional_t<I+1<sizeof...(Args), std::true_type, std::false_type>{});
257  }
type
Definition: HCALResponse.h:21
const std::complex< double > I
Definition: I.h:8
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::dtr ( std::array< void *, sizeof...(Args)> &  iArray,
std::false_type   
)
inlinestaticprivate

Definition at line 260 of file Table.h.

260  {
261  }
template<typename... Args>
const_iterator edm::soa::Table< Args >::end ( void  ) const
inline

Definition at line 220 of file Table.h.

References edm::soa::Table< Args >::m_values, and edm::soa::Table< Args >::size().

220 { return const_iterator{m_values,size()}; }
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
ConstTableItr< Args... > const_iterator
Definition: Table.h:137
unsigned int size() const
Definition: Table.h:180
template<typename... Args>
iterator edm::soa::Table< Args >::end ( void  )
inline

Definition at line 223 of file Table.h.

References edm::soa::Table< Args >::m_values, and edm::soa::Table< Args >::size().

223 { return iterator{m_values,size()}; }
TableItr< Args... > iterator
Definition: Table.h:138
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
unsigned int size() const
Definition: Table.h:180
template<typename... Args>
template<typename U >
U::type const& edm::soa::Table< Args >::get ( size_t  iRow) const
inline
template<typename... Args>
template<typename U >
U::type& edm::soa::Table< Args >::get ( size_t  iRow)
inline
template<typename... Args>
Table<Args...>& edm::soa::Table< Args >::operator= ( Table< Args... > &&  iOther)
inline

Definition at line 170 of file Table.h.

References SimDataFormats::CaloAnalysis::cp, edm::soa::Table< Args >::m_size, edm::soa::Table< Args >::m_values, eostools::move(), and std::swap().

Referenced by edm::soa::Table< Args >::operator=().

170  {
171  Table<Args...> cp(std::move(iOther));
172  std::swap(m_size,cp.m_size);
173  std::swap(m_values, cp.m_values);
174  return *this;
175  }
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
unsigned int m_size
Definition: Table.h:238
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
def move(src, dest)
Definition: eostools.py:510
template<typename... Args>
Table<Args...>& edm::soa::Table< Args >::operator= ( Table< Args... > const &  iOther)
inline

Definition at line 176 of file Table.h.

References edm::soa::Table< Args >::operator=().

176  {
177  return operator=( Table<Args...>(iOther));
178  }
Table< Args... > & operator=(Table< Args... > &&iOther)
Definition: Table.h:170
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::resetStartingAt ( size_t  iStartIndex,
size_t  iEndIndex,
std::array< void *, sizeof...(Args)> &  ioArray,
std::true_type   
)
inlinestaticprivate

Definition at line 393 of file Table.h.

References lumiContext::fill, Exhume::I, and groupFilesInBlocks::temp.

393  {
394  using Layout = std::tuple<Args...>;
396  auto ptr = static_cast<Type*>(ioArray[I]);
397  auto temp = Type{};
398  std::fill(ptr+iStartIndex, ptr+iEndIndex, temp);
399  resetStartingAt<I+1>(iStartIndex, iEndIndex, ioArray,std::conditional_t<I+1 == sizeof...(Args), std::false_type, std::true_type>{} );
400  }
type
Definition: HCALResponse.h:21
std::tuple< Args... > Layout
Definition: Table.h:136
const std::complex< double > I
Definition: I.h:8
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::resetStartingAt ( size_t  ,
size_t  ,
std::array< void *, sizeof...(Args)> &  ,
std::false_type   
)
inlinestaticprivate

Definition at line 403 of file Table.h.

403  {
404  }
template<typename... Args>
void edm::soa::Table< Args >::resize ( unsigned int  iNewSize)
inline

Definition at line 184 of file Table.h.

References edm::soa::Table< Args >::m_size, and edm::soa::Table< Args >::m_values.

Referenced by Vispa.Gui.TextDialog.TextDialog::__init__(), Vispa.Plugins.ConfigEditor.ToolDialog.ToolDialog::__init__(), Vispa.Main.MainWindow.MainWindow::_loadIni(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

184  {
185  if(m_size == iNewSize) { return;}
186  resizeFromTo<0>(m_size,iNewSize,m_values,std::true_type{});
187  if(m_size < iNewSize) {
188  //initialize the extra values
189  resetStartingAt<0>(m_size, iNewSize,m_values,std::true_type{});
190  }
191  m_size = iNewSize;
192  }
unsigned int m_size
Definition: Table.h:238
std::array< void *, sizeof...(Args)> m_values
Definition: Table.h:239
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::resizeFromTo ( size_t  iOldSize,
size_t  iNewSize,
std::array< void *, sizeof...(Args)> &  ioArray,
std::true_type   
)
inlinestaticprivate

Definition at line 377 of file Table.h.

References popcon2dropbox::copy(), Exhume::I, and min().

377  {
378  using Layout = std::tuple<Args...>;
380  Type* oldPtr = static_cast<Type*>(ioArray[I]);
381  auto ptr = new Type[iNewSize];
382  auto nToCopy = std::min(iOldSize,iNewSize);
383  std::copy(static_cast<Type const*>(ioArray[I]), static_cast<Type const*>(ioArray[I])+nToCopy, ptr);
384  resizeFromTo<I+1>(iOldSize, iNewSize, ioArray, std::conditional_t<I+1 == sizeof...(Args), std::false_type, std::true_type>{} );
385 
386  delete [] oldPtr;
387  ioArray[I]=ptr;
388  }
type
Definition: HCALResponse.h:21
std::tuple< Args... > Layout
Definition: Table.h:136
const std::complex< double > I
Definition: I.h:8
T min(T a, T b)
Definition: MathUtil.h:58
template<typename... Args>
template<int I>
static void edm::soa::Table< Args >::resizeFromTo ( size_t  ,
size_t  ,
std::array< void *, sizeof...(Args)> &  ,
std::false_type   
)
inlinestaticprivate

Definition at line 390 of file Table.h.

390 {}
template<typename... Args>
RowView<Args...> edm::soa::Table< Args >::row ( size_t  iRow) const
inline

Definition at line 212 of file Table.h.

References edm::soa::Table< Args >::begin().

212  {
213  return *(begin()+iRow);
214  }
const_iterator begin() const
Definition: Table.h:219
template<typename... Args>
MutableRowView<Args...> edm::soa::Table< Args >::row ( size_t  iRow)
inline

Definition at line 215 of file Table.h.

References edm::soa::Table< Args >::begin().

215  {
216  return *(begin()+iRow);
217  }
const_iterator begin() const
Definition: Table.h:219
template<typename... Args>
unsigned int edm::soa::Table< Args >::size ( void  ) const
inline

Definition at line 180 of file Table.h.

References edm::soa::Table< Args >::m_size.

Referenced by ntupleDataFormat._Collection::__iter__(), ntupleDataFormat._Collection::__len__(), and edm::soa::Table< Args >::end().

180  {
181  return m_size;
182  }
unsigned int m_size
Definition: Table.h:238

Member Data Documentation

template<typename... Args>
constexpr const unsigned int edm::soa::Table< Args >::kNColumns = sizeof...(Args)
static

Definition at line 135 of file Table.h.

template<typename... Args>
unsigned int edm::soa::Table< Args >::m_size = 0
private
template<typename... Args>
std::array<void *, sizeof...(Args)> edm::soa::Table< Args >::m_values = {{nullptr}}
private