38namespace Experimental {
81 static constexpr bool Test(A *
pt, A
const *cpt =
nullptr,
decltype(
pt->begin()) * =
nullptr,
82 decltype(
pt->end()) * =
nullptr,
decltype(cpt->begin()) * =
nullptr,
83 decltype(cpt->end()) * =
nullptr,
typename A::iterator *pi =
nullptr,
84 typename A::const_iterator *pci =
nullptr)
86 using It_t =
typename A::iterator;
87 using CIt_t =
typename A::const_iterator;
88 using V_t =
typename A::value_type;
89 return std::is_same<
decltype(
pt->begin()), It_t>
::value && std::is_same<
decltype(
pt->end()), It_t>
::value &&
90 std::is_same<
decltype(cpt->begin()), CIt_t>
::value && std::is_same<
decltype(cpt->end()), CIt_t>
::value &&
91 std::is_same<
decltype(**pi), V_t &>
::value && std::is_same<
decltype(**pci), V_t
const &>
::value &&
92 !std::is_same<T, std::string>::value;
96 static constexpr bool Test(...)
101 static constexpr bool value = Test<Test_t>(
nullptr);
106 static constexpr bool value =
true;
116 static constexpr bool value =
true;
123template <
typename T,
typename A>
124struct IsVector_t<std::vector<T, A>> :
public std::true_type {};
131 bool vector2rvec =
true);
138template <
bool MustRemove,
typename TypeList>
143template <
typename TypeList>
148template <
bool MustRemove,
typename TypeList>
151template <
bool MustRemove,
typename TypeList>
156template <
typename TypeList>
162template <
bool MustRemove,
typename TypeList>
187void Erase(
const T &that, std::vector<T> &
v)
189 v.erase(std::remove(
v.begin(),
v.end(), that),
v.end());
204unsigned int GetColumnWidth(
const std::vector<std::string>& names,
const unsigned int minColumnSpace = 8u);
209#ifdef R__HAS_HARDWARE_INTERFERENCE_SIZE
211 inline constexpr std::size_t
kCacheLineSize = std::hardware_destructive_interference_size;
225 const std::string &colName);
231 for (
size_t i = 0; i < arr.size(); ++i) {
239template <std::size_t
N,
typename... Ts>
242 auto tuple = std::forward_as_tuple(args...);
243 return std::get<N>(tuple);
246#if __cplusplus >= 201703L
247template <
class... Ts>
248using Disjunction = std::disjunction<Ts...>;
256template <
class B1,
class... Bn>
257struct Disjunction<
B1, Bn...> : std::conditional_t<bool(B1::value), B1, Disjunction<Bn...>> {
261bool IsStrInVec(
const std::string &str,
const std::vector<std::string> &
vec);
274std::vector<T>
Union(
const std::vector<T> &
v1,
const std::vector<T> &
v2)
276 std::vector<T> res =
v1;
279 for (
const auto &
e :
v2)
280 if (std::find(
v1.begin(),
v1.end(),
e) ==
v1.end())
297 template <
typename F,
typename... Args>
300 f(std::forward<Args>(args)...);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
reference emplace_back(ArgTypes &&...Args)
A log configuration for a channel, e.g.
RDataSource defines an API that RDataFrame can use to read arbitrary data formats.
typename RemoveFirstParameter< T >::type RemoveFirstParameter_t
A "std::vector"-like collection of values implementing handy operation to analyse them.
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
A TTree represents a columnar dataset.
ROOT::Experimental::RLogChannel & RDFLogChannel()
std::vector< std::string > ReplaceDotWithUnderscore(const std::vector< std::string > &columnNames)
Replace occurrences of '.
const std::type_info & TypeName2TypeID(const std::string &name)
Return the type_info associated to a name.
decltype(auto) GetNthElement(Ts &&...args)
static constexpr std::size_t kCacheLineSize
std::string ColumnName2ColumnTypeName(const std::string &colName, TTree *, RDataSource *, RDefineBase *, bool vector2rvec=true)
Return a string containing the type of the given branch.
char TypeName2ROOTTypeName(const std::string &b)
Convert type name (e.g.
std::string TypeID2TypeName(const std::type_info &id)
Returns the name of a type starting from its type_info An empty string is returned in case of failure...
bool IsStrInVec(const std::string &str, const std::vector< std::string > &vec)
void Erase(const T &that, std::vector< T > &v)
Erase that element from vector v
unsigned int GetColumnWidth(const std::vector< std::string > &names, const unsigned int minColumnSpace=8u)
Get optimal column width for printing a table given the names and the desired minimal space between c...
constexpr std::size_t CacheLineStep()
Stepping through CacheLineStep<T> values in a vector<T> brings you to a new cache line.
Long64_t InterpreterCalc(const std::string &code, const std::string &context="")
Jit code in the interpreter with TInterpreter::Calc, throw in case of errors.
typename RemoveFirstParameterIf< MustRemove, TypeList >::type RemoveFirstParameterIf_t
void CheckReaderTypeMatches(const std::type_info &colType, const std::type_info &requestedType, const std::string &colName)
constexpr std::size_t FindIdxTrue(const T &arr)
std::vector< T > Union(const std::vector< T > &v1, const std::vector< T > &v2)
Return a vector with all elements of v1 and v2 and duplicates removed.
bool IsInternalColumn(std::string_view colName)
Whether custom column with name colName is an "internal" column such as rdfentry_ or rdfslot_.
void InterpreterDeclare(const std::string &code)
Declare code in the interpreter via the TInterpreter::Declare method, throw in case of errors.
typename RemoveFirstTwoParametersIf< MustRemove, TypeList >::type RemoveFirstTwoParametersIf_t
std::vector< std::string > ColumnNames_t
ROOT type_traits extensions.
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
Struct to wrap the call to a function with a guaranteed order of execution of its arguments.
CallGuaranteedOrder(F &&f, Args &&...args)
Check for container traits.
static constexpr bool Test(A *pt, A const *cpt=nullptr, decltype(pt->begin()) *=nullptr, decltype(pt->end()) *=nullptr, decltype(cpt->begin()) *=nullptr, decltype(cpt->end()) *=nullptr, typename A::iterator *pi=nullptr, typename A::const_iterator *pci=nullptr)
static constexpr bool Test(...)
static constexpr bool value
Detect whether a type is an instantiation of vector<T,A>
RemoveFirstParameter_t< TypeList > type
type is TypeList if MustRemove is false, otherwise it is a TypeList with the first type removed
typename RemoveFirstParameterIf< true, typeTmp >::type type
typename RemoveFirstParameterIf< true, TypeList >::type typeTmp
typename T::value_type value_type
Lightweight storage for a collection of types.