entities class
entities
Public types
-
using allocator_type = soagen::
allocator_type<entities> - The allocator type used by this class.
-
template <auto Column>using column_traits =
/* ... */ - Gets the soagen::
column_traits for a specific column of the table. -
template <auto Column>using column_type =
/* ... */ - Gets the type of a specific column in the table.
-
using columns =
/* ... */ - Named index constants for all of the columns in the table.
-
using const_iterator = soagen::
const_iterator_type<entities> - Row iterators returned by const-qualified iterator functions.
-
using const_row_type = soagen::
const_row_type<entities> - Const row type used by this class.
-
using const_span_type = soagen::
const_span_type<entities> - Const-qualified span type.
-
using difference_type = std::
ptrdiff_t - The signed integer difference type used by this class.
-
using iterator = soagen::
iterator_type<entities> - Row iterators returned by iterator functions.
-
using row_type = soagen::
row_type<entities> - Regular (lvalue-qualified) row type used by this class.
-
using rvalue_iterator = soagen::
rvalue_iterator_type<entities> - Row iterators returned by rvalue-qualified iterator functions.
-
using rvalue_row_type = soagen::
rvalue_row_type<entities> - Rvalue row type used by this class.
-
using rvalue_span_type = soagen::
rvalue_span_type<entities> - Rvalue-qualified span type.
-
using size_type = std::
size_t - The unsigned integer size type used by this class.
-
using span_type = soagen::
span_type<entities> - Regular (lvalue-qualified) span type.
-
using table_traits = soagen::
table_traits_type<entities> - The soagen::
table_traits for the underlying table. -
using table_type = soagen::
table_type<entities> - This class's underlying soagen::
table type.
Public static variables
-
static constexpr
size_
type aligned_stride constexpr - The number of rows to advance to maintain the requested
alignmentfor every column. -
static constexpr
size_
type column_count constexpr - The number of columns in the table.
-
template <auto Column>static constexpr auto& column_name constexpr
- Gets the name of the specified column as a null-terminated string.
Constructors, destructors, conversion operators
Public functions
-
auto entities(const
allocator_
type& alloc) → constexpr explicit constexpr noexcept - Constructs with the given allocator.
-
auto entities(allocator_
type&& alloc) → constexpr explicit constexpr noexcept - Constructs with the given allocator.
-
auto get_allocator() const → constexpr
allocator_
type constexpr noexcept - Returns the allocator being used by the table.
- auto operator=(entities&&) → entities& defaulted
- Move-assignment operator.
- auto operator=(const entities&) → entities& defaulted
- Copy-assignment operator.
Adding rows
-
template <typename Id, typename Name = column_auto emplace_back(Id&& id, Name&& name = "", Pos&& pos = {}, Orient&& orient = { 1, 0, 0, 0 }) → constexpr entities& constexpr noexcept(…)
traits<1>::default_emplace_type, typename Pos = column_ traits<2>::default_emplace_type, typename Orient = column_ traits<3>::default_emplace_type> - Constructs a new row directly in-place at the end of the table.
- auto emplace_back(Tuple&& tuple_) → constexpr entities& constexpr noexcept(…)
- Constructs a new row directly in-place at the end of the table by unpacking a tuple-like object.
-
auto push_back(column_
traits<0>:: param_type id, column_ traits<1>:: param_type name = "", column_ traits<2>:: param_type pos = {}, column_ traits<3>:: param_type orient = { 1, 0, 0, 0 }) → constexpr entities& constexpr noexcept(…) - Adds a new row at the end of the table.
-
auto push_back(column_
traits<0>:: rvalue_type id, column_ traits<1>:: rvalue_type name = "", column_ traits<2>:: rvalue_type pos = {}, column_ traits<3>:: rvalue_type orient = { 1, 0, 0, 0 }) → constexpr entities& constexpr noexcept(…) - Adds a new row at the end of the table (rvalue overload).
Capacity
-
auto allocation_size() const → constexpr
size_
type constexpr noexcept - Returns the size of the current underlying buffer allocation in bytes.
- auto empty() const → constexpr bool constexpr noexcept
- Returns true if the number of rows is zero.
-
auto max_size() const → constexpr
size_
type constexpr noexcept - Returns the maximum possible number of rows.
-
auto reserve(size_
type new_cap) const → entities& noexcept - Reserves storage for (at least) the given number of rows.
- auto shrink_to_fit() → entities& noexcept(…)
- Frees unused capacity.
-
auto size() const → constexpr
size_
type constexpr noexcept - Returns the current number of rows.
Columns
-
template <auto Column>auto column() → constexpr column_
type<Column>* constexpr noexcept - Returns a pointer to the elements of a specific column.
-
template <auto Column>auto column() const → constexpr std::
add_const_t<column_ type<Column>>* constexpr noexcept - Returns a pointer to the elements of a specific column.
-
auto data() → constexpr
std::
byte* constexpr noexcept - Returns a pointer to the raw byte backing array.
-
auto data() → constexpr
const
std::
byte*const constexpr noexcept - Returns a pointer to the raw byte backing array.
- auto for_each_column(Func&& func) → constexpr void constexpr noexcept(…)
- Invokes a function once for each column data pointer.
- auto for_each_column(Func&& func) const → constexpr void constexpr noexcept(…)
- Invokes a function once for each column data pointer.
- auto id() → constexpr unsigned* constexpr noexcept
- Returns a pointer to the elements in column [0]: id.
- auto id() const → constexpr const unsigned* constexpr noexcept
- Returns a pointer to the elements in column [0]: id.
-
auto name() → constexpr
std::
string* constexpr noexcept - Returns a pointer to the elements in column [1]: name.
-
auto name() const → constexpr
const
std::
string* constexpr noexcept - Returns a pointer to the elements in column [1]: name.
- auto orient() → constexpr quaternion* constexpr noexcept
- Returns a pointer to the elements in column [3]: orient.
- auto orient() const → constexpr const quaternion* constexpr noexcept
- Returns a pointer to the elements in column [3]: orient.
- auto pos() → constexpr vec3* constexpr noexcept
- Returns a pointer to the elements in column [2]: pos.
- auto pos() const → constexpr const vec3* constexpr noexcept
- Returns a pointer to the elements in column [2]: pos.
Comparison
- auto operator<(const entities& lhs, const entities& rhs) → constexpr bool constexpr noexcept(…)
- Returns true if the LHS table is ordered lexicographically less-than the RHS table.
- auto operator<=(const entities& lhs, const entities& rhs) → constexpr bool constexpr noexcept(…)
- Returns true if the LHS table is ordered lexicographically less-than-or-equal-to the RHS table.
- auto operator>(const entities& lhs, const entities& rhs) → constexpr bool constexpr noexcept(…)
- Returns true if the LHS table is ordered lexicographically greater-than the RHS table.
- auto operator>=(const entities& lhs, const entities& rhs) → constexpr bool constexpr noexcept(…)
- Returns true if the LHS table is ordered lexicographically greater-than-or-equal-to the RHS table.
Equality
- auto operator!=(const entities& lhs, const entities& rhs) → constexpr bool constexpr noexcept(…)
- Returns true if not all of the elements in two tables are equal.
- auto operator==(const entities& lhs, const entities& rhs) → constexpr bool constexpr noexcept(…)
- Returns true if all of the elements in two tables are equal.
Inserting rows
-
template <typename Id, typename Name = column_auto emplace(size_
traits<1>::default_emplace_type, typename Pos = column_ traits<2>::default_emplace_type, typename Orient = column_ traits<3>::default_emplace_type> type index_, Id&& id, Name&& name = "", Pos&& pos = {}, Orient&& orient = { 1, 0, 0, 0 }) → constexpr entities& constexpr noexcept(…) - Constructs a new row directly in-place at an arbitrary position in the table.
-
auto emplace(size_
type index_, Tuple&& tuple_) → constexpr entities& constexpr noexcept(…) - Constructs a new row directly in-place at an arbitrary position in the table by unpacking a tuple-like object.
-
template <typename Id, typename Name = column_auto emplace(iterator iter_, Id&& id, Name&& name = "", Pos&& pos = {}, Orient&& orient = { 1, 0, 0, 0 }) → constexpr iterator constexpr noexcept(…)
traits<1>::default_emplace_type, typename Pos = column_ traits<2>::default_emplace_type, typename Orient = column_ traits<3>::default_emplace_type> - Constructs a new row directly in-place at an arbitrary position in the table.
- auto emplace(iterator iter_, Tuple&& tuple_) → constexpr iterator constexpr noexcept(…)
- Constructs a new row directly in-place at an arbitrary position in the table by unpacking a tuple-like object.
-
template <typename Id, typename Name = column_auto emplace(const_
traits<1>::default_emplace_type, typename Pos = column_ traits<2>::default_emplace_type, typename Orient = column_ traits<3>::default_emplace_type> iterator iter_, Id&& id, Name&& name = "", Pos&& pos = {}, Orient&& orient = { 1, 0, 0, 0 }) → constexpr const_ iterator constexpr noexcept(…) - Constructs a new row directly in-place at an arbitrary position in the table.
-
auto emplace(const_
iterator iter_, Tuple&& tuple_) → constexpr const_ iterator constexpr noexcept(…) - Constructs a new row directly in-place at an arbitrary position in the table by unpacking a tuple-like object.
-
auto insert(size_
type index_, column_ traits<0>:: param_type id, column_ traits<1>:: param_type name = "", column_ traits<2>:: param_type pos = {}, column_ traits<3>:: param_type orient = { 1, 0, 0, 0 }) → constexpr entities& constexpr noexcept(…) - Inserts a new row at an arbitrary position in the table.
-
auto insert(size_
type index_, column_ traits<0>:: rvalue_type id, column_ traits<1>:: rvalue_type name = "", column_ traits<2>:: rvalue_type pos = {}, column_ traits<3>:: rvalue_type orient = { 1, 0, 0, 0 }) → constexpr entities& constexpr noexcept(…) - Inserts a new row at an arbitrary position in the table (rvalue overload).
-
auto insert(iterator iter_,
column_
traits<0>:: param_type id, column_ traits<1>:: param_type name = "", column_ traits<2>:: param_type pos = {}, column_ traits<3>:: param_type orient = { 1, 0, 0, 0 }) → constexpr iterator constexpr noexcept(…) - Inserts a new row at an arbitrary position in the table.
-
auto insert(const_
iterator iter_, column_ traits<0>:: param_type id, column_ traits<1>:: param_type name = "", column_ traits<2>:: param_type pos = {}, column_ traits<3>:: param_type orient = { 1, 0, 0, 0 }) → constexpr const_ iterator constexpr noexcept(…) - Inserts a new row at an arbitrary position in the table.
-
auto insert(iterator iter_,
column_
traits<0>:: rvalue_type id, column_ traits<1>:: rvalue_type name = "", column_ traits<2>:: rvalue_type pos = {}, column_ traits<3>:: rvalue_type orient = { 1, 0, 0, 0 }) → constexpr iterator constexpr noexcept(…) - Inserts a new row at an arbitrary position in the table (rvalue overload).
-
auto insert(const_
iterator iter_, column_ traits<0>:: rvalue_type id, column_ traits<1>:: rvalue_type name = "", column_ traits<2>:: rvalue_type pos = {}, column_ traits<3>:: rvalue_type orient = { 1, 0, 0, 0 }) → constexpr const_ iterator constexpr noexcept(…) - Inserts a new row at an arbitrary position in the table (rvalue overload).
Iterators
-
template <auto... Cols>auto begin() & → constexpr soagen::
iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto begin() && → constexpr soagen::
iterator_type<entities && , Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto begin() const & → constexpr soagen::
const_iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto cbegin() const → constexpr soagen::
const_iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto cend() const → constexpr soagen::
const_iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to one-past-the-last row in the table.
-
template <auto... Cols>auto end() & → constexpr soagen::
iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to one-past-the-last row in the table.
-
template <auto... Cols>auto end() && → constexpr soagen::
iterator_type<entities && , Cols...> constexpr noexcept - Returns an iterator to one-past-the-last row in the table.
-
template <auto... Cols>auto end() const & → constexpr soagen::
const_iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to one-past-the-last row in the table.
Modifiers
- auto clear() → entities& noexcept
- Removes all rows from table.
-
auto erase(size_
type pos) → constexpr entities& constexpr noexcept(…) - Erases the row at the given position.
- auto erase(iterator pos) → constexpr iterator constexpr noexcept(…)
- Erases the row at the given iterator.
-
auto erase(const_
iterator pos) → constexpr const_ iterator constexpr noexcept(…) - Erases the row at the given iterator.
-
auto pop_back(size_
type num = 1) → entities& noexcept(…) - Removes the last row(s) from the table.
-
auto resize(size_
type new_size) → entities& noexcept(…) - Resizes the table to the given number of rows.
- auto swap(entities& other) → constexpr void constexpr noexcept(…)
- Swaps the contents of the table with another.
- auto swap_columns() → constexpr entities& constexpr noexcept(…)
- Swaps two columns.
-
auto unordered_erase(size_
type pos) → constexpr soagen:: optional<size_ type> constexpr noexcept(…) - Erases the row at the given position without preserving order.
-
auto unordered_erase(iterator pos) → constexpr
soagen::
optional<iterator> constexpr noexcept(…) - Erases the row at the given position without preserving order.
-
auto unordered_erase(const_
iterator pos) → constexpr soagen:: optional<const_ iterator> constexpr noexcept(…) - Erases the row at the given position without preserving order.
Rows
-
template <auto... Cols>auto at(size_
type index) & → soagen:: row_type<entities, Cols...> - Returns the row at the given index.
-
template <auto... Cols>auto at(size_
type index) && → soagen:: row_type<entities && , Cols...> - Returns the row at the given index.
-
template <auto... Cols>auto at(size_
type index) const & → soagen:: const_row_type<entities, Cols...> - Returns the row at the given index.
-
template <auto... Cols>auto back() & → soagen::
row_type<entities, Cols...> noexcept - Returns the very last row in the table.
-
template <auto... Cols>auto back() && → soagen::
row_type<entities && , Cols...> noexcept - Returns the very last row in the table.
-
template <auto... Cols>auto back() const & → soagen::
const_row_type<entities, Cols...> noexcept - Returns the very last row in the table.
-
template <auto... Cols>auto front() & → soagen::
row_type<entities, Cols...> noexcept - Returns the very first row in the table.
-
template <auto... Cols>auto front() && → soagen::
row_type<entities && , Cols...> noexcept - Returns the very first row in the table.
-
template <auto... Cols>auto front() const & → soagen::
const_row_type<entities, Cols...> noexcept - Returns the very first row in the table.
-
auto operator[](size_
type index) & → row_ type noexcept - Returns the row at the given index.
-
auto operator[](size_
type index) && → rvalue_ row_ type noexcept - Returns the row at the given index.
-
auto operator[](size_
type index) const & → const_ row_ type noexcept - Returns the row at the given index.
-
template <auto... Cols>auto row(size_
type index) & → soagen:: row_type<entities, Cols...> noexcept - Returns the row at the given index.
-
template <auto... Cols>auto row(size_
type index) && → soagen:: row_type<entities && , Cols...> noexcept - Returns the row at the given index.
-
template <auto... Cols>auto row(size_
type index) const & → soagen:: const_row_type<entities, Cols...> noexcept - Returns the row at the given index.
Spans
-
auto const_subspan(size_
type start, size_ type count = static_ cast<size_ type>(-1)) const → const_ span_ type noexcept - Returns a const-qualified span of (some part of) the table.
-
auto subspan(size_
type start, size_ type count = static_ cast<size_ type>(-1)) & → span_ type noexcept - Returns a span of (some part of) the table.
-
auto subspan(size_
type start, size_ type count = static_ cast<size_ type>(-1)) && → rvalue_ span_ type noexcept - Returns an rvalue-qualified span of (some part of) the table.
-
auto subspan(size_
type start, size_ type count = static_ cast<size_ type>(-1)) const & → const_ span_ type noexcept - Returns a const-qualified span of (some part of) the table.
Underlying table
- auto operator const table_type&() const → constexpr explicit constexpr noexcept
- Returns a const lvalue reference to the underlying soagen::
table. - auto operator table_type&() → constexpr explicit constexpr noexcept
- Returns an lvalue reference to the underlying soagen::
table. - auto operator table_type&&() → constexpr explicit constexpr noexcept
- Returns an rvalue reference to the underlying soagen::
table. -
auto table() & → constexpr
table_
type& constexpr noexcept - Returns an lvalue reference to the underlying soagen::
table. -
auto table() && → constexpr
table_
type&& constexpr noexcept - Returns an rvalue reference to the underlying soagen::
table. -
auto table() const & → constexpr
const
table_
type& constexpr noexcept - Returns a const lvalue reference to the underlying soagen::
table.
Function documentation
constexpr
size_ type soagen:: examples:: entities:: allocation_size() const constexpr noexcept
Returns the size of the current underlying buffer allocation in bytes.
template <typename
Id, typename
Name = column_ traits<1>::default_emplace_type, typename
Pos = column_ traits<2>::default_emplace_type, typename
Orient = column_ traits<3>::default_emplace_type>
constexpr
entities& soagen:: examples:: entities:: emplace(size_ type index_,
Id&& id,
Name&& name = "",
Pos&& pos = {},
Orient&& orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Constructs a new row directly in-place at an arbitrary position in the table.
template <typename
Id, typename
Name = column_ traits<1>::default_emplace_type, typename
Pos = column_ traits<2>::default_emplace_type, typename
Orient = column_ traits<3>::default_emplace_type>
constexpr
iterator soagen:: examples:: entities:: emplace(iterator iter_,
Id&& id,
Name&& name = "",
Pos&& pos = {},
Orient&& orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Constructs a new row directly in-place at an arbitrary position in the table.
template <typename
Id, typename
Name = column_ traits<1>::default_emplace_type, typename
Pos = column_ traits<2>::default_emplace_type, typename
Orient = column_ traits<3>::default_emplace_type>
constexpr
const_ iterator soagen:: examples:: entities:: emplace(const_ iterator iter_,
Id&& id,
Name&& name = "",
Pos&& pos = {},
Orient&& orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Constructs a new row directly in-place at an arbitrary position in the table.
constexpr
const_ iterator soagen:: examples:: entities:: emplace(const_ iterator iter_,
Tuple&& tuple_) constexpr noexcept(…)
Constructs a new row directly in-place at an arbitrary position in the table by unpacking a tuple-like object.
constexpr
entities& soagen:: examples:: entities:: insert(size_ type index_,
column_ traits<0>:: param_type id,
column_ traits<1>:: param_type name = "",
column_ traits<2>:: param_type pos = {},
column_ traits<3>:: param_type orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Inserts a new row at an arbitrary position in the table.
constexpr
entities& soagen:: examples:: entities:: insert(size_ type index_,
column_ traits<0>:: rvalue_type id,
column_ traits<1>:: rvalue_type name = "",
column_ traits<2>:: rvalue_type pos = {},
column_ traits<3>:: rvalue_type orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Inserts a new row at an arbitrary position in the table (rvalue overload).
constexpr
iterator soagen:: examples:: entities:: insert(iterator iter_,
column_ traits<0>:: param_type id,
column_ traits<1>:: param_type name = "",
column_ traits<2>:: param_type pos = {},
column_ traits<3>:: param_type orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Inserts a new row at an arbitrary position in the table.
constexpr
const_ iterator soagen:: examples:: entities:: insert(const_ iterator iter_,
column_ traits<0>:: param_type id,
column_ traits<1>:: param_type name = "",
column_ traits<2>:: param_type pos = {},
column_ traits<3>:: param_type orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Inserts a new row at an arbitrary position in the table.
constexpr
iterator soagen:: examples:: entities:: insert(iterator iter_,
column_ traits<0>:: rvalue_type id,
column_ traits<1>:: rvalue_type name = "",
column_ traits<2>:: rvalue_type pos = {},
column_ traits<3>:: rvalue_type orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Inserts a new row at an arbitrary position in the table (rvalue overload).
constexpr
const_ iterator soagen:: examples:: entities:: insert(const_ iterator iter_,
column_ traits<0>:: rvalue_type id,
column_ traits<1>:: rvalue_type name = "",
column_ traits<2>:: rvalue_type pos = {},
column_ traits<3>:: rvalue_type orient = { 1, 0, 0, 0 }) constexpr noexcept(…)
Inserts a new row at an arbitrary position in the table (rvalue overload).
constexpr
const_ iterator soagen:: examples:: entities:: erase(const_ iterator pos) constexpr noexcept(…)
Erases the row at the given iterator.
| Returns | An iterator to the row immediately following the one which was removed, or cend() if the one removed was the last row in the table. |
|---|
constexpr
entities& soagen:: examples:: entities:: swap_columns() constexpr noexcept(…)
Swaps two columns.
constexpr
soagen:: optional<size_ type> soagen:: examples:: entities:: unordered_erase(size_ type pos) constexpr noexcept(…)
Erases the row at the given position without preserving order.
| Returns | The position of the row that was moved into the erased row's position, if any. |
|---|
This is much faster than erase() because it uses the swap-and-pop idiom: Instead of shifting all the higher rows downward, the last row is moved into the position of the erased one and the size of the table is reduced by 1.
constexpr
soagen:: optional<iterator> soagen:: examples:: entities:: unordered_erase(iterator pos) constexpr noexcept(…)
Erases the row at the given position without preserving order.
| Returns | The position of the row that was moved into the erased row's position, if any. |
|---|
This is much faster than erase() because it uses the swap-and-pop idiom: Instead of shifting all the higher rows downward, the last row is moved into the position of the erased one and the size of the table is reduced by 1.
constexpr
soagen:: optional<const_ iterator> soagen:: examples:: entities:: unordered_erase(const_ iterator pos) constexpr noexcept(…)
Erases the row at the given position without preserving order.
| Returns | The position of the row that was moved into the erased row's position, if any. |
|---|
This is much faster than erase() because it uses the swap-and-pop idiom: Instead of shifting all the higher rows downward, the last row is moved into the position of the erased one and the size of the table is reduced by 1.
template <auto... Cols>
soagen:: row_type<entities, Cols...> soagen:: examples:: entities:: at(size_ type index) &
Returns the row at the given index.
| Exceptions | |
|---|---|
| std:: |
|
template <auto... Cols>
soagen:: row_type<entities && , Cols...> soagen:: examples:: entities:: at(size_ type index) &&
Returns the row at the given index.
| Exceptions | |
|---|---|
| std:: |
|
template <auto... Cols>
soagen:: const_row_type<entities, Cols...> soagen:: examples:: entities:: at(size_ type index) const &
Returns the row at the given index.
| Exceptions | |
|---|---|
| std:: |
|
template <auto... Cols>
soagen:: row_type<entities, Cols...> soagen:: examples:: entities:: row(size_ type index) & noexcept
Returns the row at the given index.
| Template parameters | |
|---|---|
| Cols | Indices of the columns to include in the row. Leave the list empty for all columns. |
template <auto... Cols>
soagen:: row_type<entities && , Cols...> soagen:: examples:: entities:: row(size_ type index) && noexcept
Returns the row at the given index.
| Template parameters | |
|---|---|
| Cols | Indices of the columns to include in the row. Leave the list empty for all columns. |
template <auto... Cols>
soagen:: const_row_type<entities, Cols...> soagen:: examples:: entities:: row(size_ type index) const & noexcept
Returns the row at the given index.
| Template parameters | |
|---|---|
| Cols | Indices of the columns to include in the row. Leave the list empty for all columns. |
Variable documentation
static constexpr
size_ type soagen:: examples:: entities:: aligned_stride constexpr
The number of rows to advance to maintain the requested alignment for every column.
The stride size you need to use when iterating through rows of this table such that the starting element for each batch in each column would have the same memory alignment as the value specified for the column-specific alignment.