Similar to RValue but manages an array of consecutive values.
Bulks have to come from the same cluster. Bulk I/O works with two bit masks: the mask of all the available entries in the current bulk and the mask of the required entries in a bulk read. The idea is that a single bulk may serve multiple read operations on the same range, where in each read operation a different subset of values is required. The memory of the value array is managed by the RBulk class.
Definition at line 235 of file RField.hxx.
Public Member Functions | |
RBulk (const RBulk &)=delete | |
RBulk (RBulk &&other) | |
~RBulk () | |
void | AdoptBuffer (void *buf, std::size_t capacity) |
RBulk & | operator= (const RBulk &)=delete |
RBulk & | operator= (RBulk &&other) |
void * | ReadBulk (RClusterIndex firstIndex, const bool *maskReq, std::size_t size) |
Reads 'size' values from the associated field, starting from 'firstIndex'. | |
Private Member Functions | |
RBulk (RFieldBase *field) | |
bool | ContainsRange (RClusterIndex firstIndex, std::size_t size) const |
void | CountValidValues () |
void * | GetValuePtrAt (std::size_t idx) const |
void | ReleaseValues () |
void | Reset (RClusterIndex firstIndex, std::size_t size) |
Sets a new range for the bulk. | |
Private Attributes | |
std::vector< unsigned char > | fAuxData |
Reading arrays of complex values may require additional memory, for instance for the elements of arrays of vectors. | |
std::size_t | fCapacity = 0 |
The size of the array memory block in number of values. | |
std::unique_ptr< RFieldBase::RDeleter > | fDeleter |
RFieldBase * | fField = nullptr |
The field that created the array of values. | |
RClusterIndex | fFirstIndex |
Index of the first value of the array. | |
bool | fIsAdopted = false |
True if the user provides the memory buffer for fValues. | |
std::unique_ptr< bool[]> | fMaskAvail |
Masks invalid values in the array. | |
std::size_t | fNValidValues = 0 |
The sum of non-zero elements in the fMask. | |
std::size_t | fSize = 0 |
The number of available values in the array (provided their mask is set) | |
void * | fValues = nullptr |
Cached deleter of fField. | |
std::size_t | fValueSize = 0 |
Cached copy of fField->GetValueSize() | |
Friends | |
class | RFieldBase |
#include <ROOT/RField.hxx>
|
inlineexplicitprivate |
Definition at line 273 of file RField.hxx.
ROOT::Experimental::RFieldBase::RBulk::~RBulk | ( | ) |
Definition at line 486 of file RField.cxx.
|
delete |
ROOT::Experimental::RFieldBase::RBulk::RBulk | ( | RBulk && | other | ) |
Definition at line 457 of file RField.cxx.
void ROOT::Experimental::RFieldBase::RBulk::AdoptBuffer | ( | void * | buf, |
std::size_t | capacity | ||
) |
Definition at line 541 of file RField.cxx.
|
inlineprivate |
Definition at line 260 of file RField.hxx.
|
private |
Definition at line 534 of file RField.cxx.
|
inlineprivate |
Definition at line 268 of file RField.hxx.
ROOT::Experimental::RFieldBase::RBulk & ROOT::Experimental::RFieldBase::RBulk::operator= | ( | RBulk && | other | ) |
Definition at line 471 of file RField.cxx.
|
inline |
Reads 'size' values from the associated field, starting from 'firstIndex'.
Note that the index is given relative to a certain cluster. The return value points to the array of read objects. The 'maskReq' parameter is a bool array of at least 'size' elements. Only objects for which the mask is true are guaranteed to be read in the returned value array.
Definition at line 293 of file RField.hxx.
|
private |
Definition at line 492 of file RField.cxx.
|
private |
Sets a new range for the bulk.
If there is enough capacity, the fValues array will be reused. Otherwise a new array is allocated. After reset, fMaskAvail is false for all values.
Definition at line 508 of file RField.cxx.
|
friend |
Definition at line 237 of file RField.hxx.
|
private |
Reading arrays of complex values may require additional memory, for instance for the elements of arrays of vectors.
A pointer to the fAuxData array is passed to the field's BulkRead method. The RBulk class does not modify the array in-between calls to the field's BulkRead method.
Definition at line 252 of file RField.hxx.
|
private |
The size of the array memory block in number of values.
Definition at line 243 of file RField.hxx.
|
private |
Definition at line 240 of file RField.hxx.
|
private |
The field that created the array of values.
Definition at line 239 of file RField.hxx.
|
private |
Index of the first value of the array.
Definition at line 248 of file RField.hxx.
|
private |
True if the user provides the memory buffer for fValues.
Definition at line 245 of file RField.hxx.
|
private |
Masks invalid values in the array.
Definition at line 246 of file RField.hxx.
|
private |
The sum of non-zero elements in the fMask.
Definition at line 247 of file RField.hxx.
|
private |
The number of available values in the array (provided their mask is set)
Definition at line 244 of file RField.hxx.
|
private |
Cached deleter of fField.
Pointer to the start of the array
Definition at line 241 of file RField.hxx.
|
private |
Cached copy of fField->GetValueSize()
Definition at line 242 of file RField.hxx.