Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::Prefix Class Reference
Collaboration diagram for duckdb::Prefix:

Public Member Functions

 Prefix (const ART &art, const Node ptr_p, const bool is_mutable=false, const bool set_in_memory=false)
 
 Prefix (FixedSizeAllocator &allocator, const Node ptr_p, const idx_t count)
 

Static Public Member Functions

static uint8_t GetByte (const ART &art, const Node &node, const uint8_t pos)
 
static void New (ART &art, reference< Node > &ref, const ARTKey &key, const idx_t depth, idx_t count)
 Get a new list of prefix nodes. The node reference holds the child of the last prefix node.
 
static void Concat (ART &art, Node &parent, Node &node4, const Node child, uint8_t byte, const GateStatus node4_status, const GateStatus status)
 Concatenates parent -> prev_node4 -> child.
 
static void Reduce (ART &art, Node &node, const idx_t pos)
 
static GateStatus Split (ART &art, reference< Node > &node, Node &child, const uint8_t pos)
 

Public Attributes

data_ptr_t data
 
Nodeptr
 
bool in_memory
 

Static Public Attributes

static constexpr NType PREFIX = NType::PREFIX
 
static constexpr uint8_t ROW_ID_SIZE = sizeof(row_t)
 
static constexpr uint8_t ROW_ID_COUNT = ROW_ID_SIZE - 1
 
static constexpr uint8_t DEPRECATED_COUNT = 15
 
static constexpr uint8_t METADATA_SIZE = sizeof(Node) + 1
 

Private Member Functions

Prefix Append (ART &art, const uint8_t byte)
 
void Append (ART &art, Node other)
 
Prefix TransformToDeprecatedAppend (ART &art, FixedSizeAllocator &allocator, uint8_t byte)
 

Static Private Member Functions

static Prefix NewInternal (ART &art, Node &node, const data_ptr_t data, const uint8_t count, const idx_t offset)
 
static Prefix GetTail (ART &art, const Node &node)
 
static void ConcatInternal (ART &art, Node &parent, Node &node4, const Node child, uint8_t byte, const GateStatus status)
 
static void ConcatNode4WasGate (ART &art, Node &node4, const Node child, uint8_t byte)
 
static void ConcatChildIsGate (ART &art, Node &parent, Node &node4, const Node child, uint8_t byte)
 
static void ConcatOutsideGate (ART &art, Node &parent, Node &node4, const Node child, uint8_t byte)
 
template<class F , class NODE >
static void Iterator (ART &art, reference< NODE > &ref, const bool exit_gate, const bool is_mutable, F &&lambda)
 

Detailed Description

Prefix is a wrapper class to access a prefix. The prefix contains up to the ART's prefix size bytes and an additional byte for the count. It also contains a Node pointer to a child node.

Member Function Documentation

◆ Reduce()

static void duckdb::Prefix::Reduce ( ART art,
Node node,
const idx_t  pos 
)
static

Removes up to pos bytes from the prefix. Shifts all subsequent bytes by pos. Frees empty nodes.

◆ Split()

static GateStatus duckdb::Prefix::Split ( ART art,
reference< Node > &  node,
Node child,
const uint8_t  pos 
)
static

Splits the prefix at pos. node references the node that replaces the split byte. child references the remaining node after the split. Returns GATE_SET, if a gate node was freed, else GATE_NOT_SET. If it returns GATE_SET, then the caller must set the gate for the node replacing the split byte, after its creation.

◆ Iterator()

template<class F , class NODE >
static void duckdb::Prefix::Iterator ( ART art,
reference< NODE > &  ref,
const bool  exit_gate,
const bool  is_mutable,
F &&  lambda 
)
inlinestaticprivate
57913 {
57914 while (ref.get().HasMetadata() && ref.get().GetType() == PREFIX) {
57915 Prefix prefix(art, ref, is_mutable);
57916 lambda(prefix);
57917
57918 ref = *prefix.ptr;
57919 if (exit_gate && ref.get().GetGateStatus() == GateStatus::GATE_SET) {
57920 break;
57921 }
57922 }
57923 }

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