16#ifndef ROOT_RNTupleProcessorEntry
17#define ROOT_RNTupleProcessorEntry
24#include <unordered_map>
99 std::unique_ptr<ROOT::RFieldBase>
fField;
105 RProcessorValue(std::unique_ptr<ROOT::RFieldBase> field, std::string_view qualifiedFieldName,
107 :
fField(std::move(field)),
165 std::optional<FieldIndex_t>
FindFieldIndex(std::string_view canonicalFieldName, std::string_view typeName)
const;
177 FieldIndex_t AddField(
const std::string &qualifiedFieldName, std::unique_ptr<ROOT::RFieldBase> field,
void *valuePtr,
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Collection of values in an RNTupleProcessor, analogous to REntry, with checks and support for missing...
std::unordered_set< FieldIndex_t > GetFieldIndices() const
Get all field indices of this entry.
std::uint64_t FieldIndex_t
std::vector< RProcessorValue > fProcessorValues
std::optional< FieldIndex_t > FindFieldIndex(std::string_view canonicalFieldName, std::string_view typeName) const
Find the field index of the provided field in the entry.
std::unordered_map< std::string, std::vector< FieldIndex_t > > fFieldName2Index
void BindRawPtr(FieldIndex_t fieldIdx, void *valuePtr)
Bind a new value pointer to a field in the entry.
std::string GetQualifiedFieldName(FieldIndex_t fieldIdx) const
Get the name of a field in the entry, including its parent fields.
const ROOT::RFieldBase::RValue & GetValue(FieldIndex_t fieldIdx) const
bool IsValidField(FieldIndex_t fieldIdx) const
Check whether a field is valid for reading.
void UpdateField(FieldIndex_t fieldIdx, std::unique_ptr< ROOT::RFieldBase > field)
Update a field in the entry, preserving the value pointer.
const std::string & FindFieldName(FieldIndex_t fieldIdx) const
Find the name of a field from its field index.
void ReadValue(FieldIndex_t fieldIdx, ROOT::NTupleSize_t entryIdx)
Read the field value corresponding to the given field index for the provided entry index.
void SetFieldValidity(FieldIndex_t fieldIdx, bool isValid)
Set the validity of a field, i.e.
FieldIndex_t AddField(const std::string &qualifiedFieldName, std::unique_ptr< ROOT::RFieldBase > field, void *valuePtr, const RNTupleProcessorProvenance &provenance)
Add a new field to the entry.
void Clear()
Clear all fields from the entry.
const RNTupleProcessorProvenance & GetFieldProvenance(FieldIndex_t fieldIdx) const
Get the processor provenance of a field in the entry.
std::string Get() const
Get the full processor provenance, in the form of "x.y.z".
RNTupleProcessorProvenance(const std::string &provenance)
RNTupleProcessorProvenance()=default
bool Contains(const RNTupleProcessorProvenance &other) const
Check whether the provenance subsumes the provenance in other.
bool IsPresentInFieldName(std::string_view fieldName) const
Check whether the provided field name contains this provenance.
RNTupleProcessorProvenance Evolve(const std::string &processorName) const
Add a new processor to the provenance.
Points to an object with RNTuple I/O support and keeps a pointer to the corresponding field.
Namespace for ROOT features in testing.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
RProcessorValue(std::unique_ptr< ROOT::RFieldBase > field, std::string_view qualifiedFieldName, ROOT::RFieldBase::RValue &&value, bool isValid, RNTupleProcessorProvenance provenance)
std::string fQualifiedFieldName
std::unique_ptr< ROOT::RFieldBase > fField
RNTupleProcessorProvenance fProcessorProvenance
ROOT::RFieldBase::RValue fValue