Logo ROOT  
Reference Guide
RColumnModel.hxx
Go to the documentation of this file.
1 /// \file ROOT/RColumnModel.hxx
2 /// \ingroup NTuple ROOT7
3 /// \author Jakob Blomer <jblomer@cern.ch>
4 /// \date 2018-10-09
5 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback
6 /// is welcome!
7 
8 /*************************************************************************
9  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
10  * All rights reserved. *
11  * *
12  * For the licensing terms see $ROOTSYS/LICENSE. *
13  * For the list of contributors see $ROOTSYS/README/CREDITS. *
14  *************************************************************************/
15 
16 #ifndef ROOT7_RColumnModel
17 #define ROOT7_RColumnModel
18 
19 #include <ROOT/RStringView.hxx>
20 
21 #include <string>
22 
23 namespace ROOT {
24 namespace Experimental {
25 
26 // clang-format off
27 /**
28 \class ROOT::Experimental::EColumnType
29 \ingroup NTuple
30 \brief The available trivial, native content types of a column
31 
32 More complex types, such as classes, get translated into columns of such simple types by the RField.
33 New types need to be accounted for in RColumnElementBase::Generate() and RColumnElementBase::GetBitsOnStorage(), too.
34 */
35 // clang-format on
36 enum class EColumnType {
37  kUnknown = 0,
38  // type for root columns of (nested) collections; 32bit integers that count relative to the current cluster
39  kIndex,
40  // 64 bit column that uses the lower 32bits as kIndex and the higher 32bits as a dispatch tag; used, e.g.,
41  // in order to serialize std::variant
42  kSwitch,
43  kByte,
44  kBit,
45  kReal64,
46  kReal32,
47  kReal16,
48  kReal8,
49  kInt64,
50  kInt32,
51  kInt16,
52 };
53 
54 // clang-format off
55 /**
56 \class ROOT::Experimental::RColumnModel
57 \ingroup NTuple
58 \brief Holds the static meta-data of a column in a tree
59 */
60 // clang-format on
61 class RColumnModel {
62 private:
64  bool fIsSorted;
65 
66 public:
68  RColumnModel(EColumnType type, bool isSorted) : fType(type), fIsSorted(isSorted) {}
69 
70  EColumnType GetType() const { return fType; }
71  bool GetIsSorted() const { return fIsSorted; }
72 
73  bool operator ==(const RColumnModel &other) const {
74  return (fType == other.fType) && (fIsSorted == other.fIsSorted);
75  }
76 };
77 
78 } // namespace Experimental
79 } // namespace ROOT
80 
81 #endif
ROOT::Experimental::RColumnModel::fType
EColumnType fType
Definition: RColumnModel.hxx:63
ROOT::Experimental::EColumnType::kReal64
@ kReal64
ROOT::Experimental::EColumnType::kIndex
@ kIndex
ROOT::Experimental::RColumnModel::RColumnModel
RColumnModel(EColumnType type, bool isSorted)
Definition: RColumnModel.hxx:68
ROOT::Experimental::EColumnType::kSwitch
@ kSwitch
ROOT::Experimental::RColumnModel::RColumnModel
RColumnModel()
Definition: RColumnModel.hxx:67
ROOT::Experimental::EColumnType::kReal8
@ kReal8
ROOT::Experimental::RColumnModel::operator==
bool operator==(const RColumnModel &other) const
Definition: RColumnModel.hxx:73
ROOT::Experimental::EColumnType::kInt64
@ kInt64
ROOT::Experimental::EColumnType::kInt32
@ kInt32
ROOT::Experimental::EColumnType::kBit
@ kBit
kUnknown
@ kUnknown
Definition: TStructNode.h:19
ROOT::Experimental::EColumnType::kUnknown
@ kUnknown
ROOT::Experimental::EColumnType::kReal32
@ kReal32
RStringView.hxx
ROOT::Experimental::EColumnType::kReal16
@ kReal16
ROOT::Experimental::EColumnType
EColumnType
Definition: RColumnModel.hxx:36
ROOT::Experimental::EColumnType::kByte
@ kByte
ROOT::Experimental::RColumnModel
Holds the static meta-data of a column in a tree.
Definition: RColumnModel.hxx:61
ROOT::Experimental::EColumnType::kInt16
@ kInt16
ROOT::Experimental::RColumnModel::GetIsSorted
bool GetIsSorted() const
Definition: RColumnModel.hxx:71
ROOT::Experimental::RColumnModel::GetType
EColumnType GetType() const
Definition: RColumnModel.hxx:70
type
int type
Definition: TGX11.cxx:121
ROOT::Experimental::RColumnModel::fIsSorted
bool fIsSorted
Definition: RColumnModel.hxx:64
ROOT
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: EExecutionPolicy.hxx:4