class
entitiesentities
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 size_
type aligned_stride constexpr - The number of rows to advance to maintain the requested
alignment
for every column. -
static size_
type column_count constexpr - The number of columns in the table.
-
template <auto Column>static auto& column_name constexpr
- Gets the name of the specified column as a null-terminated string.
Constructors, destructors, conversion operators
- entities() defaulted
- Default constructor.
- entities(entities&&) defaulted
- Move constructor.
- entities(const entities&) defaulted
- Copy constructor.
-
entities(const allocator_
type& alloc) explicit constexpr noexcept - Constructs with the given allocator.
-
entities(allocator_
type&& alloc) explicit constexpr noexcept - Constructs with the given allocator.
- ~entities() defaulted
- Destructor.
Public functions
-
auto get_allocator() const → 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 }) → 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.
-
template <typename Tuple>auto emplace_back(Tuple&& tuple_) → 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 }) → 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 }) → entities& constexpr noexcept(…) - Adds a new row at the end of the table (rvalue overload).
Capacity
-
auto allocation_size() const → size_
type constexpr noexcept - Returns the size of the current underlying buffer allocation in bytes.
- auto empty() const → bool constexpr noexcept
- Returns true if the number of rows is zero.
-
auto max_size() const → 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 → size_
type constexpr noexcept - Returns the current number of rows.
Columns
-
template <auto Column>auto column() → column_
type<Column>* constexpr noexcept - Returns a pointer to the elements of a specific column.
-
template <auto Column>auto column() const → std::
add_const_t<column_ type<Column>>* constexpr noexcept - Returns a pointer to the elements of a specific column.
-
auto data() → std::
byte* constexpr noexcept - Returns a pointer to the raw byte backing array.
-
auto data() → conststd::
byte*const constexpr noexcept - Returns a pointer to the raw byte backing array.
-
template <typename Func>void for_each_column(Func&& func) constexpr noexcept(…)
- Invokes a function once for each column data pointer.
-
template <typename Func>void for_each_column(Func&& func) const constexpr noexcept(…)
- Invokes a function once for each column data pointer.
- auto id() → unsigned* constexpr noexcept
- Returns a pointer to the elements in column [0]: id.
- auto id() const → const unsigned* constexpr noexcept
- Returns a pointer to the elements in column [0]: id.
-
auto name() → std::
string* constexpr noexcept - Returns a pointer to the elements in column [1]: name.
-
auto name() const → conststd::
string* constexpr noexcept - Returns a pointer to the elements in column [1]: name.
- auto orient() → quaternion* constexpr noexcept
- Returns a pointer to the elements in column [3]: orient.
- auto orient() const → const quaternion* constexpr noexcept
- Returns a pointer to the elements in column [3]: orient.
- auto pos() → vec3* constexpr noexcept
- Returns a pointer to the elements in column [2]: pos.
- auto pos() const → const vec3* constexpr noexcept
- Returns a pointer to the elements in column [2]: pos.
Comparison
- auto operator<(const entities& lhs, const entities& rhs) → 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) → 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) → 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) → 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) → bool constexpr noexcept(…)
- Returns true if not all of the elements in two tables are equal.
- auto operator==(const entities& lhs, const entities& rhs) → 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 }) → entities& constexpr noexcept(…) - Constructs a new row directly in-place at an arbitrary position in the table.
-
template <typename Tuple>auto emplace(size_
type index_, Tuple&& tuple_) → 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 }) → 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.
-
template <typename Tuple>auto emplace(iterator iter_, Tuple&& tuple_) → 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 }) → const_ iterator constexpr noexcept(…) - Constructs a new row directly in-place at an arbitrary position in the table.
-
template <typename Tuple>auto emplace(const_
iterator iter_, Tuple&& tuple_) → 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 }) → 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 }) → 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 }) → 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 }) → 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 }) → 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 }) → const_ iterator constexpr noexcept(…) - Inserts a new row at an arbitrary position in the table (rvalue overload).
Iterators
-
template <auto... Cols>auto begin() & → soagen::
iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto begin() && → soagen::
iterator_type<entities && , Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto begin() const & → soagen::
const_iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto cbegin() const → soagen::
const_iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to the first row in the table.
-
template <auto... Cols>auto cend() const → 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() & → soagen::
iterator_type<entities, Cols...> constexpr noexcept - Returns an iterator to one-past-the-last row in the table.
-
template <auto... Cols>auto end() && → 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 & → 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) → entities& constexpr noexcept(…) - Erases the row at the given position.
- auto erase(iterator pos) → iterator constexpr noexcept(…)
- Erases the row at the given iterator.
-
auto erase(const_
iterator pos) → 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.
- void swap(entities& other) constexpr noexcept(…)
- Swaps the contents of the table with another.
-
template <auto A, auto B>auto swap_columns() → entities& constexpr noexcept(…)
- Swaps two columns.
-
auto unordered_erase(size_
type pos) → soagen:: optional<size_ type> constexpr noexcept(…) - Erases the row at the given position without preserving order.
-
auto unordered_erase(iterator pos) → soagen::
optional<iterator> constexpr noexcept(…) - Erases the row at the given position without preserving order.
-
auto unordered_erase(const_
iterator pos) → 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
- operator const table_type&() const explicit constexpr noexcept
- Returns a const lvalue reference to the underlying soagen::
table. - operator table_type&() explicit constexpr noexcept
- Returns an lvalue reference to the underlying soagen::
table. - operator table_type&&() explicit constexpr noexcept
- Returns an rvalue reference to the underlying soagen::
table. -
auto table() & → table_
type& constexpr noexcept - Returns an lvalue reference to the underlying soagen::
table. -
auto table() && → table_
type&& constexpr noexcept - Returns an rvalue reference to the underlying soagen::
table. -
auto table() const & → const table_
type& constexpr noexcept - Returns a const lvalue reference to the underlying soagen::
table.
Function documentation
size_ type soagen:: examples:: entities:: allocation_size() const constexpr noexcept
Returns the size of the current underlying buffer allocation in bytes.
template <typename Func>
void soagen:: examples:: entities:: for_each_column(Func&& func) constexpr noexcept(…)
Invokes a function once for each column data pointer.
Template parameters | |
---|---|
Func | A callable type compatible with one of the following signatures:
Overload resolution is performed in the order listed above. |
Parameters | |
func | The callable to invoke. |
template <typename Func>
void soagen:: examples:: entities:: for_each_column(Func&& func) const constexpr noexcept(…)
Invokes a function once for each column data pointer.
Template parameters | |
---|---|
Func | A callable type compatible with one of the following signatures:
Overload resolution is performed in the order listed above. |
Parameters | |
func | The callable to invoke. |
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>
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>
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>
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.
template <typename Tuple>
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.
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.
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).
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.
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.
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).
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).
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. |
---|
template <auto A, auto B>
entities& soagen:: examples:: entities:: swap_columns() constexpr noexcept(…)
Swaps two columns.
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.
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.
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 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
.