CMS 3D CMS Logo

Column.h
Go to the documentation of this file.
1 #ifndef FWCore_SOA_Column_h
2 #define FWCore_SOA_Column_h
3 // -*- C++ -*-
4 //
5 // Package: FWCore/SOA
6 // Class : Column
7 //
42 //
43 // Original Author: Chris Jones
44 // Created: Thu, 24 Aug 2017 16:17:56 GMT
45 //
46 
47 // system include files
48 
49 // user include files
50 
51 // forward declarations
52 namespace edm {
53  namespace soa {
54 
58  template <typename COL, typename F>
60  using Column_type = COL;
61  F m_f;
62  };
63 
64  template <typename T, typename INHERIT>
65  struct Column {
66  using type = T;
67 
68  static constexpr const char* const& label() { return INHERIT::kLabel; }
69 
70  template <typename F>
72  return {iF};
73  }
74 
75  private:
76  Column() = default;
77  Column(const Column&) = delete; // stop default
78 
79  const Column& operator=(const Column&) = delete; // stop default
80  };
81 
82  } // namespace soa
83 } // namespace edm
84 #define SOA_DECLARE_COLUMN(_ClassName_, _Type_, _String_) \
85  struct _ClassName_ : public edm::soa::Column<_Type_, _ClassName_> { \
86  static constexpr const char* const kLabel = _String_; \
87  }
88 #endif
edm::soa::Column::label
static constexpr const char *const & label()
Definition: Column.h:68
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::soa::Column::type
T type
Definition: Column.h:66
F
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163
edm::soa::Column::filler
static ColumnFillerHolder< INHERIT, F > filler(F &&iF)
Definition: Column.h:71
edm::soa::Column::Column
Column()=default
edm::soa::ColumnFillerHolder::m_f
F m_f
Definition: Column.h:61
edm::soa::ColumnFillerHolder::Column_type
COL Column_type
Definition: Column.h:60
T
long double T
Definition: Basic3DVectorLD.h:48
edm::soa::Column
Definition: Column.h:65
edm::soa::Column::operator=
const Column & operator=(const Column &)=delete
edm::soa::ColumnFillerHolder
Definition: Column.h:59