Logo ROOT  
Reference Guide
ROOT::RDF::RDisplay Class Reference

This class is the textual representation of the content of a columnar dataset.

This class is provided to the user, and it can be used to print on screen the entries of the dataset requested through the Display action in a compact representation or to return the full representation of the events as a string. In order to apply proper formatting the content is buffered in memory as strings.

Definition at line 65 of file RDisplay.hxx.

Public Member Functions

 RDisplay (const VecStr_t &columnNames, const VecStr_t &types, int entries)
 Creates an RDisplay to print the event values. More...
 
std::string AsString () const
 Returns the representation as a string. More...
 
void Print () const
 Prints the representation to the standard output. More...
 

Private Types

using DElement_t = ROOT::Internal::RDF::RDisplayElement
 
using VecStr_t = std::vector< std::string >
 

Private Member Functions

void AddCollectionToRow (const VecStr_t &collection)
 Adds a collection to the table. More...
 
bool AddInterpreterString (std::stringstream &, ROOT::RVec< bool > &boolArr, const int &index)
 AddInterpreterString overload for arrays of booleans. More...
 
bool AddInterpreterString (std::stringstream &, ROOT::RVec< char > &charArr, const int &index)
 AddInterpreterString overload for arrays of chars. More...
 
template<typename T , typename std::enable_if< ROOT::Internal::RDF::IsDataContainer< T >::value, int >::type = 0>
bool AddInterpreterString (std::stringstream &stream, T &collection, const int &index)
 Appends collection.size() cling::printValue calls to the stringstream. More...
 
template<typename T , typename std::enable_if<!ROOT::Internal::RDF::IsDataContainer< T >::value, int >::type = 0>
bool AddInterpreterString (std::stringstream &stream, T &element, const int &index)
 Appends a cling::printValue call to the stringstream. More...
 
template<typename... Columns>
void AddRow (Columns &... columns)
 Adds a row of events to the table. More...
 
void AddToRow (const std::string &stringEle)
 Adds a single element to the next slot in the table. More...
 
void EnsureCurrentColumnWidth (size_t w)
 
size_t GetNColumnsToShorten () const
 Get the number of columns that do NOT fit in the characters limit. More...
 
bool HasNext ()
 If the number of required rows has been parsed, returns false. More...
 
void MovePosition ()
 Moves to the next cell. More...
 

Private Attributes

std::vector< VecStr_tfCollectionsRepresentations
 Used by the JITted code to store the string representation of the data in case of collection. More...
 
size_t fCurrentColumn = 0
 Column that is being filled. More...
 
size_t fCurrentRow = 0
 Row that is being filled. More...
 
size_t fEntries
 Number of events to process for each column (i.e. number of rows). More...
 
std::vector< boolfIsCollection
 True if the column contains a collection. More...
 
size_t fNColumns
 Number of columns to be printed. More...
 
size_t fNextRow = 1
 Next row to be filled. More...
 
VecStr_t fRepresentations
 Used by the JITted code to store the string representation of the data. More...
 
std::vector< std::vector< DElement_t > > fTable
 String representation of the data to be printed. More...
 
VecStr_t fTypes
 This attribute stores the type of each column. It is needed by the interpreter to print it. More...
 
std::vector< unsigned shortfWidths
 Tracks the maximum width of each column, based on the largest element. More...
 

Static Private Attributes

static constexpr unsigned fgMaxWidth = 80
 
static constexpr char fgSeparator = ' '
 Spacing used to align the table entries. More...
 

Friends

template<typename T >
class ROOT::Internal::RDF::DisplayHelper
 

#include <ROOT/RDF/RDisplay.hxx>

Member Typedef Documentation

◆ DElement_t

◆ VecStr_t

using ROOT::RDF::RDisplay::VecStr_t = std::vector<std::string>
private

Definition at line 69 of file RDisplay.hxx.

Constructor & Destructor Documentation

◆ RDisplay()

ROOT::RDF::RDisplay::RDisplay ( const VecStr_t columnNames,
const VecStr_t types,
int  entries 
)

Creates an RDisplay to print the event values.

Parameters
[in]columnNamesColumns to print
[in]typesThe type of each column
[in]entriesHow many events per column (row) must be processed.

Definition at line 167 of file RDFDisplay.cxx.

Member Function Documentation

◆ AddCollectionToRow()

void ROOT::RDF::RDisplay::AddCollectionToRow ( const VecStr_t collection)
private

Adds a collection to the table.

Starting from the slot, the elements are added one under the other, each one using a single cell of an entire row

Definition at line 117 of file RDFDisplay.cxx.

◆ AddInterpreterString() [1/4]

bool ROOT::RDF::RDisplay::AddInterpreterString ( std::stringstream &  ,
ROOT::RVec< bool > &  boolArr,
const int index 
)
inlineprivate

AddInterpreterString overload for arrays of booleans.

Parameters
[in]boolArrThe bool array to convert to string representation
[in]indexTo which column the event belongs
Returns
true, the event is a collection

This specialization for arrays of booleans skips the cling::printValue (i.e. appends nothing to the stream) and directly writes to fCollectionsRepresentations the string representation of the array of chars.

Definition at line 167 of file RDisplay.hxx.

◆ AddInterpreterString() [2/4]

bool ROOT::RDF::RDisplay::AddInterpreterString ( std::stringstream &  ,
ROOT::RVec< char > &  charArr,
const int index 
)
inlineprivate

AddInterpreterString overload for arrays of chars.

Parameters
[in]charArrThe character array to convert to string representation
[in]indexTo which column the event belongs
Returns
false, the event is not a collection

This specialization for arrays of characters skips the cling::printValue (i.e. appends nothing to the stream) and directly writes to fRepresentations the string representation of the array of chars.

Definition at line 148 of file RDisplay.hxx.

◆ AddInterpreterString() [3/4]

template<typename T , typename std::enable_if< ROOT::Internal::RDF::IsDataContainer< T >::value, int >::type = 0>
bool ROOT::RDF::RDisplay::AddInterpreterString ( std::stringstream &  stream,
T &  collection,
const int index 
)
inlineprivate

Appends collection.size() cling::printValue calls to the stringstream.

Template Parameters
Tthe type of the event to convert
Parameters
[in]streamWhere the conversion function call will be chained.
[in]collectionThe event to convert to its string representation
[in]indexTo which column the event belongs to
Returns
true, the event is a collection This function chains a sequence of call to cling::printValue, one for each element of the collection.

Definition at line 117 of file RDisplay.hxx.

◆ AddInterpreterString() [4/4]

template<typename T , typename std::enable_if<!ROOT::Internal::RDF::IsDataContainer< T >::value, int >::type = 0>
bool ROOT::RDF::RDisplay::AddInterpreterString ( std::stringstream &  stream,
T &  element,
const int index 
)
inlineprivate

Appends a cling::printValue call to the stringstream.

Template Parameters
Tthe type of the event to convert
Parameters
[in]streamWhere the conversion function call will be chained.
[in]elementThe event to convert to its string representation
[in]indexTo which column the event belongs to
Returns
false, the event is not a collection

Definition at line 101 of file RDisplay.hxx.

◆ AddRow()

template<typename... Columns>
void ROOT::RDF::RDisplay::AddRow ( Columns &...  columns)
inlineprivate

Adds a row of events to the table.

Definition at line 201 of file RDisplay.hxx.

◆ AddToRow()

void ROOT::RDF::RDisplay::AddToRow ( const std::string &  stringEle)
private

Adds a single element to the next slot in the table.

Definition at line 105 of file RDFDisplay.cxx.

◆ AsString()

std::string ROOT::RDF::RDisplay::AsString ( ) const

Returns the representation as a string.

Definition at line 251 of file RDFDisplay.cxx.

◆ EnsureCurrentColumnWidth()

void ROOT::RDF::RDisplay::EnsureCurrentColumnWidth ( size_t  w)
private

Definition at line 94 of file RDFDisplay.cxx.

◆ GetNColumnsToShorten()

size_t ROOT::RDF::RDisplay::GetNColumnsToShorten ( ) const
private

Get the number of columns that do NOT fit in the characters limit.

Definition at line 179 of file RDFDisplay.cxx.

◆ HasNext()

bool ROOT::RDF::RDisplay::HasNext ( )
inlineprivate

If the number of required rows has been parsed, returns false.

Definition at line 227 of file RDisplay.hxx.

◆ MovePosition()

void ROOT::RDF::RDisplay::MovePosition ( )
private

Moves to the next cell.

Moves to the next cell, and if the row is full moves to the next row.

Definition at line 155 of file RDFDisplay.cxx.

◆ Print()

void ROOT::RDF::RDisplay::Print ( void  ) const

Prints the representation to the standard output.

Collections are shortened to the first and last element. The overall width is shortened to a fixed number of columns that should fit the screen width.

Definition at line 194 of file RDFDisplay.cxx.

Friends And Related Function Documentation

◆ ROOT::Internal::RDF::DisplayHelper

template<typename T >
friend class ROOT::Internal::RDF::DisplayHelper
friend

Definition at line 67 of file RDisplay.hxx.

Member Data Documentation

◆ fCollectionsRepresentations

std::vector<VecStr_t> ROOT::RDF::RDisplay::fCollectionsRepresentations
private

Used by the JITted code to store the string representation of the data in case of collection.

Each row corresponds to a column, each column to a value of the collection.

Definition at line 81 of file RDisplay.hxx.

◆ fCurrentColumn

size_t ROOT::RDF::RDisplay::fCurrentColumn = 0
private

Column that is being filled.

Definition at line 89 of file RDisplay.hxx.

◆ fCurrentRow

size_t ROOT::RDF::RDisplay::fCurrentRow = 0
private

Row that is being filled.

Definition at line 87 of file RDisplay.hxx.

◆ fEntries

size_t ROOT::RDF::RDisplay::fEntries
private

Number of events to process for each column (i.e. number of rows).

Definition at line 91 of file RDisplay.hxx.

◆ fgMaxWidth

constexpr unsigned ROOT::RDF::RDisplay::fgMaxWidth = 80
staticconstexprprivate

Definition at line 72 of file RDisplay.hxx.

◆ fgSeparator

constexpr char ROOT::RDF::RDisplay::fgSeparator = ' '
staticconstexprprivate

Spacing used to align the table entries.

Definition at line 71 of file RDisplay.hxx.

◆ fIsCollection

std::vector<bool> ROOT::RDF::RDisplay::fIsCollection
private

True if the column contains a collection.

Collections are treated differently during the printing.

Definition at line 75 of file RDisplay.hxx.

◆ fNColumns

size_t ROOT::RDF::RDisplay::fNColumns
private

Number of columns to be printed.

Definition at line 85 of file RDisplay.hxx.

◆ fNextRow

size_t ROOT::RDF::RDisplay::fNextRow = 1
private

Next row to be filled.

Definition at line 88 of file RDisplay.hxx.

◆ fRepresentations

VecStr_t ROOT::RDF::RDisplay::fRepresentations
private

Used by the JITted code to store the string representation of the data.

Definition at line 80 of file RDisplay.hxx.

◆ fTable

std::vector<std::vector<DElement_t> > ROOT::RDF::RDisplay::fTable
private

String representation of the data to be printed.

Definition at line 77 of file RDisplay.hxx.

◆ fTypes

VecStr_t ROOT::RDF::RDisplay::fTypes
private

This attribute stores the type of each column. It is needed by the interpreter to print it.

Definition at line 74 of file RDisplay.hxx.

◆ fWidths

std::vector<unsigned short> ROOT::RDF::RDisplay::fWidths
private

Tracks the maximum width of each column, based on the largest element.

Definition at line 78 of file RDisplay.hxx.

Libraries for ROOT::RDF::RDisplay:
[legend]

The documentation for this class was generated from the following files: