wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
Loading...
Searching...
No Matches
wowlib::db::detail::RecordOps Struct Reference

The one thing that stays per-record: a table of thunks over the record VECTOR (only they know sizeof(Record)) plus the access table above. More...

#include <wowlib/db/record_bridge.hpp>

Public Attributes

std::span< const ColumnAccess > columns
 Per-column access facts.
std::size_t idColumn = SIZE_MAX
 Index of the $id$ column, or SIZE_MAX.
void(* clear )(void *) = nullptr
void(* reserve )(void *, std::size_t) = nullptr
std::size_t(* add )(void *) = nullptr
 emplace_back() → index.
std::size_t(* size )(const void *) = nullptr
std::byte *(* at )(void *, std::size_t) = nullptr
 &vec[i], as bytes.
const std::byte *(* cat )(const void *, std::size_t) = nullptr
void(* clonePush )(void *, std::size_t) = nullptr
 push_back(vec[src]).
void(* pushCopy )(void *, const void *) = nullptr
 push_back(*src).
void(* assignAt )(void *, std::size_t, const void *) = nullptr
 vec[i] = *src.
void(* eraseAt )(void *, std::size_t) = nullptr
 vec.erase(begin+i).

Detailed Description

The one thing that stays per-record: a table of thunks over the record VECTOR (only they know sizeof(Record)) plus the access table above.

Every thunk is a single vector call; the branchy field-access core they feed is compiled once in record_bridge.cpp.

Definition at line 130 of file record_bridge.hpp.

Member Data Documentation

◆ add

std::size_t(* wowlib::db::detail::RecordOps::add) (void *) = nullptr

emplace_back() → index.

Definition at line 136 of file record_bridge.hpp.

◆ assignAt

void(* wowlib::db::detail::RecordOps::assignAt) (void *, std::size_t, const void *) = nullptr

vec[i] = *src.

Definition at line 144 of file record_bridge.hpp.

◆ at

std::byte *(* wowlib::db::detail::RecordOps::at) (void *, std::size_t) = nullptr

&vec[i], as bytes.

Definition at line 138 of file record_bridge.hpp.

◆ cat

const std::byte *(* wowlib::db::detail::RecordOps::cat) (const void *, std::size_t) = nullptr

Definition at line 139 of file record_bridge.hpp.

◆ clear

void(* wowlib::db::detail::RecordOps::clear) (void *) = nullptr

Definition at line 134 of file record_bridge.hpp.

◆ clonePush

void(* wowlib::db::detail::RecordOps::clonePush) (void *, std::size_t) = nullptr

push_back(vec[src]).

Definition at line 140 of file record_bridge.hpp.

◆ columns

std::span<const ColumnAccess> wowlib::db::detail::RecordOps::columns

Per-column access facts.

Definition at line 131 of file record_bridge.hpp.

◆ eraseAt

void(* wowlib::db::detail::RecordOps::eraseAt) (void *, std::size_t) = nullptr

vec.erase(begin+i).

Definition at line 145 of file record_bridge.hpp.

◆ idColumn

std::size_t wowlib::db::detail::RecordOps::idColumn = SIZE_MAX

Index of the $id$ column, or SIZE_MAX.

Definition at line 132 of file record_bridge.hpp.

◆ pushCopy

void(* wowlib::db::detail::RecordOps::pushCopy) (void *, const void *) = nullptr

push_back(*src).

Definition at line 143 of file record_bridge.hpp.

◆ reserve

void(* wowlib::db::detail::RecordOps::reserve) (void *, std::size_t) = nullptr

Definition at line 135 of file record_bridge.hpp.

◆ size

std::size_t(* wowlib::db::detail::RecordOps::size) (const void *) = nullptr

Definition at line 137 of file record_bridge.hpp.


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