mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Data Structures | Public Member Functions | Private Member Functions | Private Attributes | Friends
m::storage::DataLayout::INode Struct Reference

An internal node of the recursive data layout model. More...

#include <DataLayout.hpp>

Inheritance diagram for m::storage::DataLayout::INode:
[legend]
Collaboration diagram for m::storage::DataLayout::INode:
[legend]

Data Structures

struct  child_t
 

‍a child Node and its relative offset and stride within the containing INode

More...
 
struct  const_iterator
 

Public Member Functions

size_type num_tuples () const override
 

‍returns the number of tuples represented by an instance of this node


 
size_type num_children () const
 

‍returns the number of child Nodes of this INode


 
Leafadd_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.
 
INodeadd_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_toperator[] (size_type idx) const
 

‍returns a reference to the idx -th child


 
const child_tat (size_type idx) const
 

‍returns a reference to the idx -th child; throws m::invalid_argument if idx is out of bounds


 
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
 
INodeoperator= (INode &&)=default
 

Private Attributes

std::vector< child_tchildren_
 

‍the child Nodes of this INode


 
size_type num_tuples_
 

‍the number of tuples that fit into one instance of this INode


 

Friends

struct DataLayout
 

Detailed Description

An internal node of the recursive data layout model.

It holds one or more child Nodes 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.

Constructor & Destructor Documentation

◆ INode() [1/2]

m::storage::DataLayout::INode::INode ( size_type  num_tuples)
inlineprivate

Definition at line 146 of file DataLayout.hpp.

◆ INode() [2/2]

m::storage::DataLayout::INode::INode ( INode &&  )
privatedefault

Member Function Documentation

◆ accept()

void DataLayout::INode::accept ( ConstDataLayoutVisitor &  v) const
overridevirtual

Implements m::storage::DataLayout::Node.

Definition at line 66 of file DataLayout.cpp.

◆ add_inode()

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().

◆ add_leaf()

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().

◆ at()

const child_t & m::storage::DataLayout::INode::at ( size_type  idx) const
inline

‍returns a reference to the idx -th child; throws m::invalid_argument if idx is out of bounds

Definition at line 170 of file DataLayout.hpp.

◆ begin()

const_iterator m::storage::DataLayout::INode::begin ( ) const
inline

Definition at line 175 of file DataLayout.hpp.

◆ cbegin()

const_iterator m::storage::DataLayout::INode::cbegin ( ) const
inline

Definition at line 177 of file DataLayout.hpp.

◆ cend()

const_iterator m::storage::DataLayout::INode::cend ( ) const
inline

Definition at line 178 of file DataLayout.hpp.

◆ end()

const_iterator m::storage::DataLayout::INode::end ( ) const
inline

Definition at line 176 of file DataLayout.hpp.

◆ for_sibling_leaves()

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

◆ num_children()

size_type m::storage::DataLayout::INode::num_children ( ) const
inline

◆ num_tuples()

size_type m::storage::DataLayout::INode::num_tuples ( ) const
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().

◆ operator=()

INode & m::storage::DataLayout::INode::operator= ( INode &&  )
privatedefault

◆ operator[]()

const child_t & m::storage::DataLayout::INode::operator[] ( size_type  idx) const
inline

‍returns a reference to the idx -th child

Definition at line 165 of file DataLayout.hpp.

References M_insist.

◆ print()

void DataLayout::INode::print ( std::ostream &  out,
unsigned  indentation = 0 
) const

Friends And Related Function Documentation

◆ DataLayout

friend struct DataLayout
friend

Definition at line 100 of file DataLayout.hpp.

Field Documentation

◆ children_

std::vector<child_t> m::storage::DataLayout::INode::children_
private

‍the child Nodes of this INode

Definition at line 142 of file DataLayout.hpp.

Referenced by m::storage::DataLayout::add_inode().

◆ num_tuples_

size_type m::storage::DataLayout::INode::num_tuples_
private

‍the number of tuples that fit into one instance of this INode

Definition at line 144 of file DataLayout.hpp.


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