|
wowlib 0.0.0
Read & write World of Warcraft client files — a C++26 core
|
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). | |
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.
| std::size_t(* wowlib::db::detail::RecordOps::add) (void *) = nullptr |
emplace_back() → index.
Definition at line 136 of file record_bridge.hpp.
| 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.
| 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.
| const std::byte *(* wowlib::db::detail::RecordOps::cat) (const void *, std::size_t) = nullptr |
Definition at line 139 of file record_bridge.hpp.
| void(* wowlib::db::detail::RecordOps::clear) (void *) = nullptr |
Definition at line 134 of file record_bridge.hpp.
| void(* wowlib::db::detail::RecordOps::clonePush) (void *, std::size_t) = nullptr |
push_back(vec[src]).
Definition at line 140 of file record_bridge.hpp.
| std::span<const ColumnAccess> wowlib::db::detail::RecordOps::columns |
Per-column access facts.
Definition at line 131 of file record_bridge.hpp.
| void(* wowlib::db::detail::RecordOps::eraseAt) (void *, std::size_t) = nullptr |
vec.erase(begin+i).
Definition at line 145 of file record_bridge.hpp.
| 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.
| void(* wowlib::db::detail::RecordOps::pushCopy) (void *, const void *) = nullptr |
push_back(*src).
Definition at line 143 of file record_bridge.hpp.
| void(* wowlib::db::detail::RecordOps::reserve) (void *, std::size_t) = nullptr |
Definition at line 135 of file record_bridge.hpp.
| std::size_t(* wowlib::db::detail::RecordOps::size) (const void *) = nullptr |
Definition at line 137 of file record_bridge.hpp.