![]() |
mutable
A Database System for Research and Fast Prototyping
|
An internal node of the recursive data layout model. More...
#include <DataLayout.hpp>
Data Structures | |
struct | child_t |
More... | |
struct | const_iterator |
Public Member Functions | |
size_type | num_tuples () const override |
| |
size_type | num_children () const |
Leaf & | add_leaf (const m::Type *type, size_type idx, uint64_t offset_in_bits, uint64_t stride_in_bits) |
Creates a Leaf and adds it as a child to this INode . | |
INode & | add_inode (size_type num_tuples, uint64_t offset_in_bits, uint64_t stride_in_bits) |
Creates an INode and adds it as a child to this INode . | |
const child_t & | operator[] (size_type idx) const |
| |
const child_t & | at (size_type idx) const |
| |
const_iterator | begin () const |
const_iterator | end () const |
const_iterator | cbegin () const |
const_iterator | cend () const |
void | accept (ConstDataLayoutVisitor &v) const override |
void | for_sibling_leaves (level_info_stack_t &level_info_stack, uint64_t inode_offset_in_bits, const callback_leaves_t &callback) const |
void | print (std::ostream &out, unsigned indentation=0) const |
Private Member Functions | |
INode (size_type num_tuples) | |
INode (INode &&)=default | |
INode & | operator= (INode &&)=default |
Private Attributes | |
std::vector< child_t > | children_ |
size_type | num_tuples_ |
| |
Friends | |
struct | DataLayout |
An internal node of the recursive data layout model.
It holds one or more child Node
s and stores the offset and stride for each child. The offset and stride are relative within this INode
.
Definition at line 98 of file DataLayout.hpp.
|
inlineprivate |
Definition at line 146 of file DataLayout.hpp.
|
privatedefault |
|
overridevirtual |
Implements m::storage::DataLayout::Node.
Definition at line 66 of file DataLayout.cpp.
DataLayout::INode & DataLayout::INode::add_inode | ( | size_type | num_tuples, |
uint64_t | offset_in_bits, | ||
uint64_t | stride_in_bits | ||
) |
Creates an INode
and adds it as a child to this INode
.
The created INode
represents num_tuples
many tuples and will have the given, relative offset_in_bits
and stride_in_bits
.
Definition at line 47 of file DataLayout.cpp.
References M_insist, m::storage::DataLayout::num_tuples(), m::storage::DataLayout::INode::child_t::ptr, and m::storage::DataLayout::stride_in_bits().
DataLayout::Leaf & DataLayout::INode::add_leaf | ( | const m::Type * | type, |
size_type | idx, | ||
uint64_t | offset_in_bits, | ||
uint64_t | stride_in_bits | ||
) |
Creates a Leaf
and adds it as a child to this INode
.
The created Leaf
will have the given, relative offset_in_bits
and stride_in_bits
within this INode
.
Definition at line 29 of file DataLayout.cpp.
References m::Type::is_bitmap(), m::Type::is_boolean(), M_insist, m::storage::DataLayout::num_tuples(), m::storage::DataLayout::INode::child_t::ptr, and m::storage::DataLayout::stride_in_bits().
Referenced by m::storage::DataLayout::add_leaf(), m::storage::RowLayoutFactory::make(), and m::storage::PAXLayoutFactory::make().
returns a reference to the
idx
-th child; throwsm::invalid_argument
ifidx
is out of bounds
Definition at line 170 of file DataLayout.hpp.
|
inline |
Definition at line 175 of file DataLayout.hpp.
|
inline |
Definition at line 177 of file DataLayout.hpp.
|
inline |
Definition at line 178 of file DataLayout.hpp.
|
inline |
Definition at line 176 of file DataLayout.hpp.
void DataLayout::INode::for_sibling_leaves | ( | level_info_stack_t & | level_info_stack, |
uint64_t | inode_offset_in_bits, | ||
const callback_leaves_t & | callback | ||
) | const |
Definition at line 68 of file DataLayout.cpp.
References m::storage::DataLayout::child(), m::storage::DataLayout::leaf_info_t::leaf, m::storage::DataLayout::Node::num_tuples(), and m::storage::DataLayout::level_info_t::stride_in_bits.
Referenced by m::storage::DataLayout::for_sibling_leaves().
|
inline |
Definition at line 155 of file DataLayout.hpp.
Referenced by m::storage::DataLayout::add_inode(), m::storage::DataLayout::add_leaf(), m::storage::DataLayout::operator bool(), and m::storage::DataLayout::INode::const_iterator::operator++().
|
inlineoverridevirtual |
returns the number of tuples represented by an instance of this node
Implements m::storage::DataLayout::Node.
Definition at line 153 of file DataLayout.hpp.
Referenced by m::storage::DataLayout::add_inode(), m::storage::DataLayout::is_finite(), and m::storage::DataLayout::num_tuples().
returns a reference to the
idx
-th child
Definition at line 165 of file DataLayout.hpp.
References M_insist.
void DataLayout::INode::print | ( | std::ostream & | out, |
unsigned | indentation = 0 |
||
) | const |
Definition at line 108 of file DataLayout.cpp.
References m::storage::DataLayout::child(), m::Numeric::DECIMAL_TO_BINARY_DIGITS, and M_insist.
|
friend |
Definition at line 100 of file DataLayout.hpp.
|
private |
|
private |
the number of tuples that fit into one instance of this
INode
Definition at line 144 of file DataLayout.hpp.