31#include <unordered_map>
34namespace Experimental {
89 template <
typename T,
typename... ArgsT>
93 auto ptr = std::make_shared<T>(std::forward<ArgsT>(args)...);
112 std::size_t bytesWritten = 0;
114 bytesWritten +=
v.Append();
123 "make sure to use a token from the same model as this entry."));
127 template <
typename T>
130 if constexpr (!std::is_void_v<T>) {
131 const auto &
v =
fValues[token.fIndex];
133 throw RException(
R__FAIL(
"type mismatch for field " +
v.GetField().GetFieldName() +
": " +
166 template <
typename T>
170 EnsureMatchingType<T>(token);
174 template <
typename T>
175 void BindValue(std::string_view fieldName, std::shared_ptr<T> objPtr)
177 BindValue<T>(
GetToken(fieldName), objPtr);
180 template <
typename T>
184 EnsureMatchingType<T>(token);
188 template <
typename T>
191 BindRawPtr<void>(
GetToken(fieldName), rawPtr);
194 template <
typename T>
198 EnsureMatchingType<T>(token);
199 return std::static_pointer_cast<T>(
fValues[token.
fIndex].GetPtr<
void>());
202 template <
typename T>
203 std::shared_ptr<T>
GetPtr(std::string_view fieldName)
const
205 return GetPtr<T>(
GetToken(fieldName));
#define R__FAIL(msg)
Short-hand to return an RResult<T> in an error state; the RError is implicitly converted into RResult...
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
The field token identifies a top-level field in this entry.
std::uint64_t fModelId
Safety check to prevent tokens from other models being used.
std::size_t fIndex
the index in fValues that belongs to the top-level field
RFieldToken(std::size_t index, std::uint64_t modelId)
The REntry is a collection of values in an ntuple corresponding to a complete row in the data set.
void EnsureMatchingType(RFieldToken token) const
std::uint64_t fModelId
The entry must be linked to a specific model (or one if its clones), identified by a model ID.
void BindValue(RFieldToken token, std::shared_ptr< T > objPtr)
REntry & operator=(REntry &&other)=default
decltype(fValues)::const_iterator ConstIterator_t
void Read(NTupleSize_t index)
ConstIterator_t begin() const
REntry & operator=(const REntry &other)=delete
REntry(std::uint64_t modelId)
void EmplaceNewValue(std::string_view fieldName)
REntry(REntry &&other)=default
std::uint64_t GetModelId() const
void EmplaceNewValue(RFieldToken token)
std::shared_ptr< T > AddValue(RField< T > &field, ArgsT &&...args)
While building the entry, adds a new value to the list and return the value's shared pointer.
void BindRawPtr(RFieldToken token, T *rawPtr)
std::unordered_map< std::string, std::size_t > fFieldName2Token
For fast lookup of token IDs given a top-level field name.
void BindValue(std::string_view fieldName, std::shared_ptr< T > objPtr)
void UpdateValue(RFieldToken token, RFieldBase::RValue &&value)
Update the RValue for a field in the entry.
RFieldToken GetToken(std::string_view fieldName) const
The ordinal of the top-level field fieldName; can be used in other methods to address the correspondi...
void AddValue(RFieldBase::RValue &&value)
void UpdateValue(RFieldToken token, RFieldBase::RValue &value)
std::vector< RFieldBase::RValue > fValues
Corresponds to the top-level fields of the linked model.
void BindRawPtr(std::string_view fieldName, T *rawPtr)
ConstIterator_t end() const
void EnsureMatchingModel(RFieldToken token) const
REntry(const REntry &other)=delete
std::shared_ptr< T > GetPtr(std::string_view fieldName) const
std::shared_ptr< T > GetPtr(RFieldToken token) const
Base class for all ROOT issued exceptions.
Points to an object with RNTuple I/O support and keeps a pointer to the corresponding field.
const std::string & GetFieldName() const
RValue BindValue(std::shared_ptr< void > objPtr)
Creates a value from a memory location with an already constructed object.
Classes with dictionaries that can be inspected by TClass.
static std::string TypeName()
A virtual ntuple used for writing untyped collections that can be used to some extent like an RNTuple...
A context for filling entries (data) into clusters of an RNTuple.
The RNTupleModel encapulates the schema of an ntuple.
Interface for iterating over entries of RNTuples and vertically concatenated RNTuples (chains).
An RNTuple that is used to read data from storage.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...