Signet Forge 0.1.0
C++20 Parquet library with AI-native extensions
DEMO
Loading...
Searching...
No Matches
signet::forge::VectorReader Class Reference

Reads FIXED_LEN_BYTE_ARRAY page data back into float vectors. More...

#include <vector_type.hpp>

Classes

struct  ZeroCopyResult
 Zero-copy read result: a pointer to the float data and the vector count. More...
 

Public Member Functions

 VectorReader (VectorColumnSpec spec)
 Construct a VectorReader for the given column specification.
 
std::vector< std::vector< float > > read_page (const uint8_t *data, size_t data_size) const
 Decode a PLAIN-encoded page of FIXED_LEN_BYTE_ARRAY vectors into float32 vectors.
 
expected< ZeroCopyResultread_page_zero_copy (const uint8_t *data, size_t data_size) const
 Attempt a zero-copy read of a FLOAT32 page.
 
std::vector< float > read_vector (const uint8_t *page_data, size_t page_size, size_t index) const
 Read a single vector at the given index from a page.
 
const VectorColumnSpecspec () const noexcept
 The column spec this reader was constructed with.
 

Detailed Description

Reads FIXED_LEN_BYTE_ARRAY page data back into float vectors.

Does not own any data – operates on const pointers to page buffers. Supports element type conversion: FLOAT16/FLOAT64 pages are converted to float32 on read. For FLOAT32 data with natural alignment, a zero-copy path is available via read_page_zero_copy().

See also
VectorWriter, VectorColumnSpec

Definition at line 329 of file vector_type.hpp.

Constructor & Destructor Documentation

◆ VectorReader()

signet::forge::VectorReader::VectorReader ( VectorColumnSpec  spec)
inlineexplicit

Construct a VectorReader for the given column specification.

Parameters
specColumn specification (dimension and element type).

Definition at line 333 of file vector_type.hpp.

Member Function Documentation

◆ read_page()

std::vector< std::vector< float > > signet::forge::VectorReader::read_page ( const uint8_t *  data,
size_t  data_size 
) const
inline

Decode a PLAIN-encoded page of FIXED_LEN_BYTE_ARRAY vectors into float32 vectors.

Each inner vector has dimension elements.

Parameters
dataPointer to the start of page data.
data_sizeTotal byte size of the page data.
Returns
A vector of float vectors (one per stored vector).

Definition at line 343 of file vector_type.hpp.

◆ read_page_zero_copy()

expected< ZeroCopyResult > signet::forge::VectorReader::read_page_zero_copy ( const uint8_t *  data,
size_t  data_size 
) const
inline

Attempt a zero-copy read of a FLOAT32 page.

Returns a direct pointer into the page buffer without any data copying. Only succeeds when:

  • element_type is FLOAT32 (no conversion needed)
  • data pointer is 4-byte aligned (float alignment)
  • data_size is an exact multiple of bytes_per_vector()
Parameters
dataPointer to page data.
data_sizeTotal byte size of the page data.
Returns
ZeroCopyResult on success, Error on failure.

Definition at line 404 of file vector_type.hpp.

◆ read_vector()

std::vector< float > signet::forge::VectorReader::read_vector ( const uint8_t *  page_data,
size_t  page_size,
size_t  index 
) const
inline

Read a single vector at the given index from a page.

Parameters
page_dataPointer to page data.
page_sizeTotal byte size of the page data.
indexZero-based index of the vector to read.
Returns
A float vector with dimension elements, or empty on OOB.

Definition at line 439 of file vector_type.hpp.

◆ spec()

const VectorColumnSpec & signet::forge::VectorReader::spec ( ) const
inlinenoexcept

The column spec this reader was constructed with.

Definition at line 478 of file vector_type.hpp.


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