EnTT: entt::basic_storage< Type, Entity, Allocator, typename > Class Template Reference

EnTT 3.15.0

Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
entt::basic_storage< Type, Entity, Allocator, typename > Class Template Reference

Storage implementation. More...

`#include <storage.hpp>`

Inheritance diagram for entt::basic_storage< Type, Entity, Allocator, typename >:
[legend]
Collaboration diagram for entt::basic_storage< Type, Entity, Allocator, typename >:
[legend]

## Public Types
using | allocator_type = Allocator
| Allocator type.
using | base_type = underlying_type
| Base type.
using | element_type = Type
| Element type.
using | value_type = element_type
| Type of the objects assigned to entities.
using | entity_type = Entity
| Underlying entity identifier.
using | size_type = std::size_t
| Unsigned integer type.
using | difference_type = std::ptrdiff_t
| Signed integer type.
using | pointer = typename container_type::pointer
| Pointer type to contained elements.
using | const_pointer = typename alloc_traits::template rebind_traits<typename alloc_traits::const_pointer>::const_pointer
| Constant pointer type to contained elements.
using | iterator = internal::storage_iterator<container_type, traits_type::page_size>
| Random access iterator type.
using | const_iterator = internal::storage_iterator<const container_type, traits_type::page_size>
| Constant random access iterator type.
using | reverse_iterator = std::reverse_iterator<iterator>
| Reverse iterator type.
using | const_reverse_iterator = std::reverse_iterator<const_iterator>
| Constant reverse iterator type.
using | iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::iterator, iterator>>
| Extended iterable storage proxy.
using | const_iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::const_iterator, const_iterator>>
| Constant extended iterable storage proxy.
using | reverse_iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::reverse_iterator, reverse_iterator>>
| Extended reverse iterable storage proxy.
using | const_reverse_iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::const_reverse_iterator, const_reverse_iterator>>
| Constant extended reverse iterable storage proxy.
Public Types inherited from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >
using | allocator_type
| Allocator type.
using | entity_type
| Underlying entity identifier.
using | version_type
| Underlying version type.
using | size_type
| Unsigned integer type.
using | difference_type
| Signed integer type.
using | pointer
| Pointer type to contained entities.
using | iterator
| Random access iterator type.
using | const_iterator
| Constant random access iterator type.
using | reverse_iterator
| Reverse iterator type.
using | const_reverse_iterator
| Constant reverse iterator type.

## Public Member Functions
| basic_storage ()
| Default constructor.
| basic_storage (const allocator_type &allocator)
| Constructs an empty storage with a given allocator.
| basic_storage (const basic_storage &)=delete
| Default copy constructor, deleted on purpose.
| basic_storage (basic_storage &&other) noexcept
| Move constructor.
| basic_storage (basic_storage &&other, const allocator_type &allocator)
| Allocator-extended move constructor.
| ~basic_storage () override
| Default destructor.
basic_storage & | operator= (const basic_storage &)=delete
| Default copy assignment operator, deleted on purpose.
basic_storage & | operator= (basic_storage &&other) noexcept
| Move assignment operator.
void | swap (basic_storage &other) noexcept
| Exchanges the contents with those of a given storage.
constexpr allocator_type | get_allocator () const noexcept
| Returns the associated allocator.
void | reserve (const size_type cap) override
| Increases the capacity of a storage.
size_type | capacity () const noexcept override
| Returns the number of elements that a storage has currently allocated space for.
void | shrink_to_fit () override
| Requests the removal of unused capacity.
const_pointer | raw () const noexcept
| Direct access to the array of objects.
pointer | raw () noexcept
| Direct access to the array of objects.
const_iterator | cbegin () const noexcept
| Returns an iterator to the beginning.
const_iterator | begin () const noexcept
| Returns an iterator to the beginning.
iterator | begin () noexcept
| Returns an iterator to the beginning.
const_iterator | cend () const noexcept
| Returns an iterator to the end.
const_iterator | end () const noexcept
| Returns an iterator to the end.
iterator | end () noexcept
| Returns an iterator to the end.
const_reverse_iterator | crbegin () const noexcept
| Returns a reverse iterator to the beginning.
const_reverse_iterator | rbegin () const noexcept
| Returns a reverse iterator to the beginning.
reverse_iterator | rbegin () noexcept
| Returns a reverse iterator to the beginning.
const_reverse_iterator | crend () const noexcept
| Returns a reverse iterator to the end.
const_reverse_iterator | rend () const noexcept
| Returns a reverse iterator to the end.
reverse_iterator | rend () noexcept
| Returns a reverse iterator to the end.
const value_type & | get (const entity_type entt) const noexcept
| Returns the object assigned to an entity.
value_type & | get (const entity_type entt) noexcept
| Returns the object assigned to an entity.
std::tuple< const value_type & > | get_as_tuple (const entity_type entt) const noexcept
| Returns the object assigned to an entity as a tuple.
std::tuple< value_type & > | get_as_tuple (const entity_type entt) noexcept
| Returns the object assigned to an entity as a tuple.
template<typename... Args>
value_type & | emplace (const entity_type entt, Args &&...args)
| Assigns an entity to a storage and constructs its object.
template<typename... Func>
value_type & | patch (const entity_type entt, Func &&...func)
| Updates the instance assigned to a given entity in-place.
template<typename It>
iterator | insert (It first, It last, const value_type &value={})
| Assigns one or more entities to a storage and constructs their objects from a given instance.
template<typename EIt, typename CIt, typename = std::enable_if_t<std::is_same_v<typename std::iterator_traits<CIt>::value_type, value_type>>>
iterator | insert (EIt first, EIt last, CIt from)
| Assigns one or more entities to a storage and constructs their objects from a given range.
iterable | each () noexcept
| Returns an iterable object to use to visit a storage.
const_iterable | each () const noexcept
| Returns an iterable object to use to visit a storage.
reverse_iterable | reach () noexcept
| Returns a reverse iterable object to use to visit a storage.
const_reverse_iterable | reach () const noexcept
| Returns a reverse iterable object to use to visit a storage.
Public Member Functions inherited from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >
| basic_sparse_set ()
| Default constructor.
| basic_sparse_set (const allocator_type &allocator)
| Constructs an empty container with a given allocator.
| basic_sparse_set (deletion_policy pol, const allocator_type &allocator={})
| Constructs an empty container with the given policy and allocator.
| basic_sparse_set (const type_info &elem, deletion_policy pol=deletion_policy::swap_and_pop, const allocator_type &allocator={})
| Constructs an empty container with the given value type, policy and allocator.
| basic_sparse_set (const basic_sparse_set &)=delete
| Default copy constructor, deleted on purpose.
| basic_sparse_set (basic_sparse_set &&other) noexcept
| Move constructor.
| basic_sparse_set (basic_sparse_set &&other, const allocator_type &allocator)
| Allocator-extended move constructor.
virtual | ~basic_sparse_set ()
| Default destructor.
basic_sparse_set & | operator= (const basic_sparse_set &)=delete
| Default copy assignment operator, deleted on purpose.
basic_sparse_set & | operator= (basic_sparse_set &&other) noexcept
| Move assignment operator.
void | swap (basic_sparse_set &other) noexcept
| Exchanges the contents with those of a given sparse set.
constexpr allocator_type | get_allocator () const noexcept
| Returns the associated allocator.
deletion_policy | policy () const noexcept
| Returns the deletion policy of a sparse set.
size_type | free_list () const noexcept
| Returns data on the free list whose meaning depends on the mode.
void | free_list (const size_type value) noexcept
| Sets data on the free list whose meaning depends on the mode.
size_type | extent () const noexcept
| Returns the extent of a sparse set.
size_type | size () const noexcept
| Returns the number of elements in a sparse set.
bool | empty () const noexcept
| Checks whether a sparse set is empty.
bool | contiguous () const noexcept
| Checks whether a sparse set is fully packed.
pointer | data () const noexcept
| Direct access to the internal packed array.
iterator | begin () const noexcept
| Returns an iterator to the beginning.
const_iterator | cbegin () const noexcept
iterator | end () const noexcept
| Returns an iterator to the end.
const_iterator | cend () const noexcept
reverse_iterator | rbegin () const noexcept
| Returns a reverse iterator to the beginning.
const_reverse_iterator | crbegin () const noexcept
reverse_iterator | rend () const noexcept
| Returns a reverse iterator to the end.
const_reverse_iterator | crend () const noexcept
const_iterator | find (const entity_type entt) const noexcept
| Finds an entity.
bool | contains (const entity_type entt) const noexcept
| Checks if a sparse set contains an entity.
version_type | current (const entity_type entt) const noexcept
| Returns the contained version for an identifier.
size_type | index (const entity_type entt) const noexcept
| Returns the position of an entity in a sparse set.
entity_type | operator[] (const size_type pos) const noexcept
| Returns the entity at specified location.
const void * | value (const entity_type entt) const noexcept
| Returns the element assigned to an entity, if any.
void * | value (const entity_type entt) noexcept
iterator | push (const entity_type entt, const void *elem=nullptr)
| Assigns an entity to a sparse set.
iterator | push (It first, It last)
| Assigns one or more entities to a sparse set.
version_type | bump (const entity_type entt)
| Bump the version number of an entity.
void | erase (const entity_type entt)
| Erases an entity from a sparse set.
void | erase (It first, It last)
| Erases entities from a set.
bool | remove (const entity_type entt)
| Removes an entity from a sparse set if it exists.
size_type | remove (It first, It last)
| Removes entities from a sparse set if they exist.
void | compact ()
| Removes all tombstones from a sparse set.
void | swap_elements (const entity_type lhs, const entity_type rhs)
| Swaps two entities in a sparse set.
void | sort_n (const size_type length, Compare compare, Sort algo=Sort{}, Args &&...args)
| Sort the first count elements according to the given comparison function.
void | sort (Compare compare, Sort algo=Sort{}, Args &&...args)
| Sort all elements according to the given comparison function.
iterator | sort_as (It first, It last)
| Sort entities according to their order in a range.
void | clear ()
| Clears a sparse set.
const type_info & | type () const noexcept
| Returned value type, if any.
void | bind (Type &&value) noexcept
| Forwards variables to derived classes, if any.

## Static Public Attributes
static constexpr deletion_policy | storage_policy {traits_type::in_place_delete}
| Storage deletion policy.

## Protected Member Functions
void | pop (underlying_iterator first, underlying_iterator last) override
| Erases entities from a storage.
void | pop_all () override
| Erases all entities of a storage.
underlying_iterator | try_emplace (const Entity entt, const bool force_back, const void *value) override
| Assigns an entity to a storage.
Protected Member Functions inherited from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >
void | swap_only (const basic_iterator it)
| Erases an entity from a sparse set.
void | swap_and_pop (const basic_iterator it)
| Erases an entity from a sparse set.
void | in_place_pop (const basic_iterator it)
| Erases an entity from a sparse set.
virtual void | bind_any (any) noexcept
| Forwards variables to derived classes, if any.

## Additional Inherited Members
Protected Types inherited from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >
using | basic_iterator
| Random access iterator type.

## Detailed Description

template<typename Type, typename Entity, typename Allocator, typename>
class entt::basic_storage< Type, Entity, Allocator, typename >

Storage implementation.

Internal data structures arrange elements to maximize performance. There are no guarantees that objects are returned in the insertion order when iterate a storage. Do not make assumption on the order in any case.

Warning
  Empty types aren't explicitly instantiated. Therefore, many of the functions normally available for non-empty types will not be available for empty ones.

Template Parameters

  Type | Element type.
  Entity | A valid entity type.
  Allocator | Type of allocator used to manage memory and elements.

Definition at line 229 of file storage.hpp.

## Member Typedef Documentation

## ◆ allocator_type

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::allocator_type = Allocator

Allocator type.

Definition at line 398 of file storage.hpp.

## ◆ base_type

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::base_type = underlying_type

Base type.

Definition at line 400 of file storage.hpp.

## ◆ const_iterable

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::const_iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::const_iterator, const_iterator>>

Constant extended iterable storage proxy.

Definition at line 426 of file storage.hpp.

## ◆ const_iterator

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::const_iterator = internal::storage_iterator<const container_type, traits_type::page_size>

Constant random access iterator type.

Definition at line 418 of file storage.hpp.

## ◆ const_pointer

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::const_pointer = typename alloc_traits::template rebind_traits<typename alloc_traits::const_pointer>::const_pointer

Constant pointer type to contained elements.

Definition at line 414 of file storage.hpp.

## ◆ const_reverse_iterable

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::const_reverse_iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::const_reverse_iterator, const_reverse_iterator>>

Constant extended reverse iterable storage proxy.

Definition at line 430 of file storage.hpp.

## ◆ const_reverse_iterator

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::const_reverse_iterator = std::reverse_iterator<const_iterator>

Constant reverse iterator type.

Definition at line 422 of file storage.hpp.

## ◆ difference_type

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::difference_type = std::ptrdiff_t

Signed integer type.

Definition at line 410 of file storage.hpp.

## ◆ element_type

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::element_type = Type

Element type.

Definition at line 402 of file storage.hpp.

## ◆ entity_type

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::entity_type = Entity

Underlying entity identifier.

Definition at line 406 of file storage.hpp.

## ◆ iterable

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::iterator, iterator>>

Extended iterable storage proxy.

Definition at line 424 of file storage.hpp.

## ◆ iterator

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::iterator = internal::storage_iterator<container_type, traits_type::page_size>

Random access iterator type.

Definition at line 416 of file storage.hpp.

## ◆ pointer

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::pointer = typename container_type::pointer

Pointer type to contained elements.

Definition at line 412 of file storage.hpp.

## ◆ reverse_iterable

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::reverse_iterable = iterable_adaptor<internal::extended_storage_iterator<typename base_type::reverse_iterator, reverse_iterator>>

Extended reverse iterable storage proxy.

Definition at line 428 of file storage.hpp.

## ◆ reverse_iterator

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::reverse_iterator = std::reverse_iterator<iterator>

Reverse iterator type.

Definition at line 420 of file storage.hpp.

## ◆ size_type

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::size_type = std::size_t

Unsigned integer type.

Definition at line 408 of file storage.hpp.

## ◆ value_type

template<typename Type, typename Entity, typename Allocator, typename>

using entt::basic_storage< Type, Entity, Allocator, typename >::value_type = element_type

Type of the objects assigned to entities.

Definition at line 404 of file storage.hpp.

## Constructor & Destructor Documentation

## ◆ basic_storage() [1/4]

template<typename Type, typename Entity, typename Allocator, typename>

entt::basic_storage< Type, Entity, Allocator, typename >::basic_storage | ( |  | ) |
| inline

Default constructor.

Definition at line 435 of file storage.hpp.

## ◆ basic_storage() [2/4]

template<typename Type, typename Entity, typename Allocator, typename>

entt::basic_storage< Type, Entity, Allocator, typename >::basic_storage | ( | const allocator_type & | allocator | ) |
| inlineexplicit

Constructs an empty storage with a given allocator.

Parameters

  allocator | The allocator to use.

Definition at line 442 of file storage.hpp.

## ◆ basic_storage() [3/4]

template<typename Type, typename Entity, typename Allocator, typename>

entt::basic_storage< Type, Entity, Allocator, typename >::basic_storage | ( | basic_storage< Type, Entity, Allocator, typename > && | other | ) |
| inlinenoexcept

Move constructor.

Parameters

  other | The instance to move from.

Definition at line 454 of file storage.hpp.

## ◆ basic_storage() [4/4]

template<typename Type, typename Entity, typename Allocator, typename>

entt::basic_storage< Type, Entity, Allocator, typename >::basic_storage | ( | basic_storage< Type, Entity, Allocator, typename > && | other,
|  | const allocator_type & | allocator )
| inline

Allocator-extended move constructor.

Parameters

  other | The instance to move from.
  allocator | The allocator to use.

Definition at line 465 of file storage.hpp.

## ◆ ~basic_storage()

template<typename Type, typename Entity, typename Allocator, typename>

entt::basic_storage< Type, Entity, Allocator, typename >::~basic_storage | ( |  | ) |
| inlineoverride

Default destructor.

Definition at line 474 of file storage.hpp.

## Member Function Documentation

## ◆ begin() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const_iterator entt::basic_storage< Type, Entity, Allocator, typename >::begin | ( |  | ) | const
| inlinenodiscardnoexcept

Returns an iterator to the beginning.

If the storage is empty, the returned iterator will be equal to `end()`.

Returns
  An iterator to the first instance of the internal array.

Definition at line 569 of file storage.hpp.

## ◆ begin() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

iterator entt::basic_storage< Type, Entity, Allocator, typename >::begin | ( |  | ) |
| inlinenodiscardnoexcept

Returns an iterator to the beginning.

If the storage is empty, the returned iterator will be equal to `end()`.

Returns
  An iterator to the first instance of the internal array.

Definition at line 574 of file storage.hpp.

## ◆ capacity()

template<typename Type, typename Entity, typename Allocator, typename>

size_type entt::basic_storage< Type, Entity, Allocator, typename >::capacity | ( |  | ) | const
| inlinenodiscardoverridevirtualnoexcept

Returns the number of elements that a storage has currently allocated space for.

Returns
  Capacity of the storage.

Reimplemented from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >.

Definition at line 533 of file storage.hpp.

## ◆ cbegin()

template<typename Type, typename Entity, typename Allocator, typename>

const_iterator entt::basic_storage< Type, Entity, Allocator, typename >::cbegin | ( |  | ) | const
| inlinenodiscardnoexcept

Returns an iterator to the beginning.

If the storage is empty, the returned iterator will be equal to `end()`.

Returns
  An iterator to the first instance of the internal array.

Definition at line 563 of file storage.hpp.

## ◆ cend()

template<typename Type, typename Entity, typename Allocator, typename>

const_iterator entt::basic_storage< Type, Entity, Allocator, typename >::cend | ( |  | ) | const
| inlinenodiscardnoexcept

Returns an iterator to the end.

Returns
  An iterator to the element following the last instance of the internal array.

Definition at line 584 of file storage.hpp.

## ◆ crbegin()

template<typename Type, typename Entity, typename Allocator, typename>

const_reverse_iterator entt::basic_storage< Type, Entity, Allocator, typename >::crbegin | ( |  | ) | const
| inlinenodiscardnoexcept

Returns a reverse iterator to the beginning.

If the storage is empty, the returned iterator will be equal to `rend()`.

Returns
  An iterator to the first instance of the reversed internal array.

Definition at line 605 of file storage.hpp.

## ◆ crend()

template<typename Type, typename Entity, typename Allocator, typename>

const_reverse_iterator entt::basic_storage< Type, Entity, Allocator, typename >::crend | ( |  | ) | const
| inlinenodiscardnoexcept

Returns a reverse iterator to the end.

Returns
  An iterator to the element following the last instance of the reversed internal array.

Definition at line 624 of file storage.hpp.

## ◆ each() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const_iterable entt::basic_storage< Type, Entity, Allocator, typename >::each | ( |  | ) | const
| inlinenodiscardnoexcept

Returns an iterable object to use to visit a storage.

The iterable object returns a tuple that contains the current entity and a reference to its element.

Returns
  An iterable object to use to visit the storage.

Definition at line 767 of file storage.hpp.

## ◆ each() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

iterable entt::basic_storage< Type, Entity, Allocator, typename >::each | ( |  | ) |
| inlinenodiscardnoexcept

Returns an iterable object to use to visit a storage.

The iterable object returns a tuple that contains the current entity and a reference to its element.

Returns
  An iterable object to use to visit the storage.

Definition at line 762 of file storage.hpp.

## ◆ emplace()

template<typename Type, typename Entity, typename Allocator, typename>
template<typename... Args>

value_type & entt::basic_storage< Type, Entity, Allocator, typename >::emplace | ( | const entity_type | entt,
|  | Args &&... | args )
| inline

Assigns an entity to a storage and constructs its object.

Warning
  Attempting to use an entity that already belongs to the storage results in undefined behavior.

Template Parameters

  Args | Types of arguments to use to construct the object.

Parameters

  entt | A valid identifier.
  args | Parameters to use to construct an object for the entity.

Returns
  A reference to the newly created object.

Definition at line 684 of file storage.hpp.

## ◆ end() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const_iterator entt::basic_storage< Type, Entity, Allocator, typename >::end | ( |  | ) | const
| inlinenodiscardnoexcept

Returns an iterator to the end.

Returns
  An iterator to the element following the last instance of the internal array.

Definition at line 589 of file storage.hpp.

## ◆ end() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

iterator entt::basic_storage< Type, Entity, Allocator, typename >::end | ( |  | ) |
| inlinenodiscardnoexcept

Returns an iterator to the end.

Returns
  An iterator to the element following the last instance of the internal array.

Definition at line 594 of file storage.hpp.

## ◆ get() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const value_type & entt::basic_storage< Type, Entity, Allocator, typename >::get | ( | const entity_type | entt | ) | const
| inlinenodiscardnoexcept

Returns the object assigned to an entity.

Warning
  Attempting to use an entity that doesn't belong to the storage results in undefined behavior.

Parameters

  entt | A valid identifier.

Returns
  The object assigned to the entity.

Definition at line 648 of file storage.hpp.

## ◆ get() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

value_type & entt::basic_storage< Type, Entity, Allocator, typename >::get | ( | const entity_type | entt | ) |
| inlinenodiscardnoexcept

Returns the object assigned to an entity.

Warning
  Attempting to use an entity that doesn't belong to the storage results in undefined behavior.

Parameters

  entt | A valid identifier.

Returns
  The object assigned to the entity.

Definition at line 653 of file storage.hpp.

## ◆ get_allocator()

template<typename Type, typename Entity, typename Allocator, typename>

allocator_type entt::basic_storage< Type, Entity, Allocator, typename >::get_allocator | ( |  | ) | const
| inlinenodiscardconstexprnoexcept

Returns the associated allocator.

Returns
  The associated allocator.

Definition at line 509 of file storage.hpp.

## ◆ get_as_tuple() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

std::tuple< const value_type & > entt::basic_storage< Type, Entity, Allocator, typename >::get_as_tuple | ( | const entity_type | entt | ) | const
| inlinenodiscardnoexcept

Returns the object assigned to an entity as a tuple.

Parameters

  entt | A valid identifier.

Returns
  The object assigned to the entity as a tuple.

Definition at line 662 of file storage.hpp.

## ◆ get_as_tuple() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

std::tuple< value_type & > entt::basic_storage< Type, Entity, Allocator, typename >::get_as_tuple | ( | const entity_type | entt | ) |
| inlinenodiscardnoexcept

Returns the object assigned to an entity as a tuple.

Parameters

  entt | A valid identifier.

Returns
  The object assigned to the entity as a tuple.

Definition at line 667 of file storage.hpp.

## ◆ insert() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>
template<typename EIt, typename CIt, typename = std::enable_if_t<std::is_same_v<typename std::iterator_traits<CIt>::value_type, value_type>>>

iterator entt::basic_storage< Type, Entity, Allocator, typename >::insert | ( | EIt | first,
|  | EIt | last,
|  | CIt | from )
| inline

Assigns one or more entities to a storage and constructs their objects from a given range.

See also
  construct

Template Parameters

  EIt | Type of input iterator.
  CIt | Type of input iterator.

Parameters

  first | An iterator to the first element of the range of entities.
  last | An iterator past the last element of the range of entities.
  from | An iterator to the first element of the range of objects.

Returns
  Iterator pointing to the first element inserted, if any.

Definition at line 746 of file storage.hpp.

## ◆ insert() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>
template<typename It>

iterator entt::basic_storage< Type, Entity, Allocator, typename >::insert | ( | It | first,
|  | It | last,
|  | const value_type & | value = {} )
| inline

Assigns one or more entities to a storage and constructs their objects from a given instance.

Warning
  Attempting to assign an entity that already belongs to the storage results in undefined behavior.

Template Parameters

  It | Type of input iterator.

Parameters

  first | An iterator to the first element of the range of entities.
  last | An iterator past the last element of the range of entities.
  value | An instance of the object to construct.

Returns
  Iterator pointing to the first element inserted, if any.

Definition at line 724 of file storage.hpp.

## ◆ operator=() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

basic_storage & entt::basic_storage< Type, Entity, Allocator, typename >::operator= | ( | basic_storage< Type, Entity, Allocator, typename > && | other | ) |
| inlinenoexcept

Move assignment operator.

Parameters

  other | The instance to move from.

Returns
  This storage.

Definition at line 489 of file storage.hpp.

## ◆ operator=() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

basic_storage & entt::basic_storage< Type, Entity, Allocator, typename >::operator= | ( | const basic_storage< Type, Entity, Allocator, typename > & |  | ) |
| delete

Default copy assignment operator, deleted on purpose.

Returns
  This storage.

## ◆ patch()

template<typename Type, typename Entity, typename Allocator, typename>
template<typename... Func>

value_type & entt::basic_storage< Type, Entity, Allocator, typename >::patch | ( | const entity_type | entt,
|  | Func &&... | func )
| inline

Updates the instance assigned to a given entity in-place.

Template Parameters

  Func | Types of the function objects to invoke.

Parameters

  entt | A valid identifier.
  func | Valid function objects.

Returns
  A reference to the updated instance.

Definition at line 702 of file storage.hpp.

## ◆ pop()

template<typename Type, typename Entity, typename Allocator, typename>

void entt::basic_storage< Type, Entity, Allocator, typename >::pop | ( | underlying_iterator | first,
|  | underlying_iterator | last )
| inlineoverrideprotectedvirtual

Erases entities from a storage.

Parameters

  first | An iterator to the first element of the range of entities.
  last | An iterator past the last element of the range of entities.

Reimplemented from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >.

Definition at line 338 of file storage.hpp.

## ◆ pop_all()

template<typename Type, typename Entity, typename Allocator, typename>

void entt::basic_storage< Type, Entity, Allocator, typename >::pop_all | ( |  | ) |
| inlineoverrideprotectedvirtual

Erases all entities of a storage.

Reimplemented from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >.

Definition at line 357 of file storage.hpp.

## ◆ raw() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const_pointer entt::basic_storage< Type, Entity, Allocator, typename >::raw | ( |  | ) | const
| inlinenodiscardnoexcept

Direct access to the array of objects.

Returns
  A pointer to the array of objects.

Definition at line 547 of file storage.hpp.

## ◆ raw() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

pointer entt::basic_storage< Type, Entity, Allocator, typename >::raw | ( |  | ) |
| inlinenodiscardnoexcept

Direct access to the array of objects.

Returns
  A pointer to the array of objects.

Definition at line 552 of file storage.hpp.

## ◆ rbegin() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const_reverse_iterator entt::basic_storage< Type, Entity, Allocator, typename >::rbegin | ( |  | ) | const
| inlinenodiscardnoexcept

Returns a reverse iterator to the beginning.

If the storage is empty, the returned iterator will be equal to `rend()`.

Returns
  An iterator to the first instance of the reversed internal array.

Definition at line 610 of file storage.hpp.

## ◆ rbegin() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

reverse_iterator entt::basic_storage< Type, Entity, Allocator, typename >::rbegin | ( |  | ) |
| inlinenodiscardnoexcept

Returns a reverse iterator to the beginning.

If the storage is empty, the returned iterator will be equal to `rend()`.

Returns
  An iterator to the first instance of the reversed internal array.

Definition at line 615 of file storage.hpp.

## ◆ reach() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const_reverse_iterable entt::basic_storage< Type, Entity, Allocator, typename >::reach | ( |  | ) | const
| inlinenodiscardnoexcept

Returns a reverse iterable object to use to visit a storage.

See also
  each

Returns
  A reverse iterable object to use to visit the storage.

Definition at line 783 of file storage.hpp.

## ◆ reach() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

reverse_iterable entt::basic_storage< Type, Entity, Allocator, typename >::reach | ( |  | ) |
| inlinenodiscardnoexcept

Returns a reverse iterable object to use to visit a storage.

See also
  each

Returns
  A reverse iterable object to use to visit the storage.

Definition at line 778 of file storage.hpp.

## ◆ rend() [1/2]

template<typename Type, typename Entity, typename Allocator, typename>

const_reverse_iterator entt::basic_storage< Type, Entity, Allocator, typename >::rend | ( |  | ) | const
| inlinenodiscardnoexcept

Returns a reverse iterator to the end.

Returns
  An iterator to the element following the last instance of the reversed internal array.

Definition at line 629 of file storage.hpp.

## ◆ rend() [2/2]

template<typename Type, typename Entity, typename Allocator, typename>

reverse_iterator entt::basic_storage< Type, Entity, Allocator, typename >::rend | ( |  | ) |
| inlinenodiscardnoexcept

Returns a reverse iterator to the end.

Returns
  An iterator to the element following the last instance of the reversed internal array.

Definition at line 634 of file storage.hpp.

## ◆ reserve()

template<typename Type, typename Entity, typename Allocator, typename>

void entt::basic_storage< Type, Entity, Allocator, typename >::reserve | ( | const size_type | cap | ) |
| inlineoverridevirtual

Increases the capacity of a storage.

If the new capacity is greater than the current capacity, new storage is allocated, otherwise the method does nothing.

Parameters

  cap | Desired capacity.

Reimplemented from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >.

Definition at line 521 of file storage.hpp.

## ◆ shrink_to_fit()

template<typename Type, typename Entity, typename Allocator, typename>

void entt::basic_storage< Type, Entity, Allocator, typename >::shrink_to_fit | ( |  | ) |
| inlineoverridevirtual

Requests the removal of unused capacity.

Reimplemented from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >.

Definition at line 538 of file storage.hpp.

## ◆ swap()

template<typename Type, typename Entity, typename Allocator, typename>

void entt::basic_storage< Type, Entity, Allocator, typename >::swap | ( | basic_storage< Type, Entity, Allocator, typename > & | other | ) |
| inlinenoexcept

Exchanges the contents with those of a given storage.

Parameters

  other | Storage to exchange the content with.

Definition at line 499 of file storage.hpp.

## ◆ try_emplace()

template<typename Type, typename Entity, typename Allocator, typename>

underlying_iterator entt::basic_storage< Type, Entity, Allocator, typename >::try_emplace | ( | const Entity | entt,
|  | const bool | force_back,
|  | const void * | value )
| inlineoverrideprotectedvirtual

Assigns an entity to a storage.

Parameters

  entt | A valid identifier.
  value | Optional opaque value.
  force_back | Force back insertion.

Returns
  Iterator pointing to the emplaced element.

Reimplemented from entt::basic_sparse_set< Entity, std::allocator_traits< Allocator >::template rebind_alloc< Entity > >.

Definition at line 380 of file storage.hpp.

## Member Data Documentation

## ◆ storage_policy

template<typename Type, typename Entity, typename Allocator, typename>

deletion_policy entt::basic_storage< Type, Entity, Allocator, typename >::storage_policy {traits_type::in_place_delete}
| staticconstexpr

Storage deletion policy.

Definition at line 432 of file storage.hpp.

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

- src/entt/entity/fwd.hpp
- src/entt/entity/storage.hpp