68 std::unique_ptr<ROOT::Internal::RColumnElementBase>
fElement;
107 template <
typename CppT>
108 static std::unique_ptr<RColumn>
112 column->fElement = ROOT::Internal::RColumnElementBase::Generate<CppT>(
type);
139 void AppendV(
const void *from, std::size_t count)
141 auto src =
reinterpret_cast<const unsigned char *
>(from);
167 void *from =
static_cast<unsigned char *
>(
fReadPageRef.
Get().GetBuffer()) +
178 void *from =
static_cast<unsigned char *
>(
fReadPageRef.
Get().GetBuffer()) +
186 auto tail =
static_cast<unsigned char *
>(to);
208 auto tail =
static_cast<unsigned char *
>(to);
227 template <
typename CppT>
234 template <
typename CppT>
241 template <
typename CppT>
249 return reinterpret_cast<CppT *
>(
static_cast<unsigned char *
>(
fReadPageRef.
Get().GetBuffer()) +
253 template <
typename CppT>
261 return reinterpret_cast<CppT *
>(
static_cast<unsigned char *
>(
fReadPageRef.
Get().GetBuffer()) +
345 return static_cast<std::uint16_t
>(
fElement->GetBitsOnStorage());
#define R__unlikely(expr)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
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 char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
The available trivial, native content types of a column.
A column is a storage-backed array of a simple, fixed-size type, from which pages can be mapped into ...
RColumn(const RColumn &)=delete
std::size_t fLastGoodTeamIdx
Points into fTeam to the column that successfully returned the last page.
RPageStorage::ColumnHandle_t GetHandleSink() const
void HandleWritePageIfFull()
Used when trying to append to a full write page.
void ReadV(ROOT::NTupleSize_t globalIndex, ROOT::NTupleSize_t count, void *to)
void GetSwitchInfo(ROOT::NTupleSize_t globalIndex, RNTupleLocalIndex *varIndex, std::uint32_t *tag)
Get the currently active cluster id.
bool ReadPageContains(ROOT::NTupleSize_t globalIndex) const
ROOT::Internal::RPageRef fReadPageRef
The currently mapped page for reading.
ROOT::NTupleSize_t GetGlobalIndex(RNTupleLocalIndex clusterIndex)
void SetBitsOnStorage(std::size_t bits)
void MapPage(RNTupleLocalIndex localIndex)
ROOT::NTupleSize_t GetNElements() const
ROOT::ENTupleColumnType GetType() const
CppT * Map(const ROOT::NTupleSize_t globalIndex)
void Read(const ROOT::NTupleSize_t globalIndex, void *to)
RPageSource * GetPageSource() const
RPageSource * fPageSource
void AppendV(const void *from, std::size_t count)
std::optional< std::pair< double, double > > GetValueRange() const
void Append(const void *from)
void ConnectPageSource(ROOT::DescriptorId_t fieldId, RPageSource &pageSource)
Connect the column to a page source.
RNTupleLocalIndex GetClusterIndex(ROOT::NTupleSize_t globalIndex)
RColumn & operator=(const RColumn &)=delete
RPageStorage::ColumnHandle_t fHandleSource
bool TryMapPage(ROOT::NTupleSize_t globalIndex)
std::uint16_t GetRepresentationIndex() const
void MapPage(ROOT::NTupleSize_t globalIndex)
std::vector< RColumn * > fTeam
The column team is a set of columns that serve the same column index for different representation IDs...
CppT * Map(RNTupleLocalIndex localIndex)
std::uint32_t fIndex
Columns belonging to the same field are distinguished by their order.
std::uint32_t GetIndex() const
std::size_t GetWritePageCapacity() const
ROOT::NTupleSize_t fNElements
The number of elements written resp. available in the column.
RPageSink * GetPageSink() const
static std::unique_ptr< RColumn > Create(ROOT::ENTupleColumnType type, std::uint32_t columnIdx, std::uint16_t representationIdx)
ROOT::Internal::RPage fWritePage
The page into which new elements are being written.
ROOT::NTupleSize_t fFirstElementIndex
Global index of the first element in this column; usually == 0, unless it is a deferred column.
RColumn(ROOT::ENTupleColumnType type, std::uint32_t columnIndex, std::uint16_t representationIndex)
ROOT::NTupleSize_t fInitialNElements
The initial number of elements in a page.
void MergeTeams(RColumn &other)
std::uint16_t fRepresentationIndex
Fields can have multiple column representations, distinguished by representation index.
ROOT::DescriptorId_t GetOnDiskId() const
RPageStorage::ColumnHandle_t fHandleSink
void SetValueRange(double min, double max)
CppT * MapV(RNTupleLocalIndex localIndex, ROOT::NTupleSize_t &nItems)
bool ReadPageContains(RNTupleLocalIndex localIndex) const
void ConnectPageSink(ROOT::DescriptorId_t fieldId, RPageSink &pageSink, ROOT::NTupleSize_t firstElementIndex=0U)
Connect the column to a page sink.
ROOT::NTupleSize_t GetFirstElementIndex() const
void GetCollectionInfo(RNTupleLocalIndex localIndex, RNTupleLocalIndex *collectionStart, ROOT::NTupleSize_t *collectionSize)
CppT * MapV(const ROOT::NTupleSize_t globalIndex, ROOT::NTupleSize_t &nItems)
void ReadV(RNTupleLocalIndex localIndex, ROOT::NTupleSize_t count, void *to)
std::unique_ptr< ROOT::Internal::RColumnElementBase > fElement
Used to pack and unpack pages on writing/reading.
RPageStorage::ColumnHandle_t GetHandleSource() const
void Read(RNTupleLocalIndex localIndex, void *to)
ROOT::ENTupleColumnType fType
ROOT::DescriptorId_t fOnDiskId
The column id in the column descriptor, once connected to a sink or source.
void GetCollectionInfo(const ROOT::NTupleSize_t globalIndex, RNTupleLocalIndex *collectionStart, ROOT::NTupleSize_t *collectionSize)
For offset columns only, look at the two adjacent values that define a collection's coordinates.
ROOT::Internal::RColumnElementBase * GetElement() const
std::uint16_t GetBitsOnStorage() const
Abstract interface to write data into an ntuple.
const ROOT::RNTupleWriteOptions & GetWriteOptions() const
Returns the sink's write options.
virtual ROOT::Internal::RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements)
Get a new, empty page for the given column that can be filled with up to nElements; nElements must be...
Abstract interface to read data from an ntuple.
A column element encapsulates the translation between basic C++ types and their column representation...
A page is a slice of a column that is mapped into memory.
std::uint32_t GetNElements() const
std::size_t GetNBytes() const
The space taken by column elements in the buffer.
void * GrowUnchecked(std::uint32_t nElements)
Increases the number elements in the page.
std::uint32_t GetMaxElements() const
std::size_t GetCapacity() const
Addresses a column element or field item relative to a particular cluster, instead of a global NTuple...
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
constexpr DescriptorId_t kInvalidDescriptorId