EnTT 3.13.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Types | Protected Member Functions | List of all members
entt::basic_sparse_set< Entity, Allocator > Class Template Reference

Basic sparse set implementation. More...

#include <sparse_set.hpp>

Inheritance diagram for entt::basic_sparse_set< Entity, Allocator >:
Inheritance graph
[legend]

Public Types

using traits_type = entt_traits< Entity >
 Entity traits.
 
using entity_type = typename traits_type::value_type
 Underlying entity identifier.
 
using version_type = typename traits_type::version_type
 Underlying version type.
 
using size_type = std::size_t
 Unsigned integer type.
 
using allocator_type = Allocator
 Allocator type.
 
using pointer = typename packed_container_type::const_pointer
 Pointer type to contained entities.
 
using iterator = basic_iterator
 Random access iterator type.
 
using const_iterator = iterator
 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.
 

Public Member Functions

 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 (basic_sparse_set &&other) noexcept
 Move constructor.
 
 basic_sparse_set (basic_sparse_set &&other, const allocator_type &allocator) noexcept
 Allocator-extended move constructor.
 
virtual ~basic_sparse_set ()
 Default destructor.
 
basic_sparse_setoperator= (basic_sparse_set &&other) noexcept
 Move assignment operator.
 
void swap (basic_sparse_set &other)
 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 the head of the free list, if any.
 
void free_list (const size_type len) noexcept
 Sets the head of the free list, if possible.
 
virtual void reserve (const size_type cap)
 Increases the capacity of a sparse set.
 
virtual size_type capacity () const noexcept
 Returns the number of elements that a sparse set has currently allocated space for.
 
virtual void shrink_to_fit ()
 Requests the removal of unused capacity.
 
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
 Returns an iterator to the beginning.
 
iterator end () const noexcept
 Returns an iterator to the end.
 
const_iterator cend () const noexcept
 Returns an iterator to the end.
 
reverse_iterator rbegin () const noexcept
 Returns a reverse iterator to the beginning.
 
const_reverse_iterator crbegin () const noexcept
 Returns a reverse iterator to the beginning.
 
reverse_iterator rend () const noexcept
 Returns a reverse iterator to the end.
 
const_reverse_iterator crend () const noexcept
 Returns a reverse iterator to the end.
 
iterator begin (int) const noexcept
 Returns an iterator to the beginning. Useful only in case of swap-only policy.
 
const_iterator cbegin (int) const noexcept
 Returns an iterator to the beginning. Useful only in case of swap-only policy.
 
iterator end (int) const noexcept
 Returns an iterator to the end. Useful only in case of swap-only policy.
 
const_iterator cend (int) const noexcept
 Returns an iterator to the end. Useful only in case of swap-only policy.
 
reverse_iterator rbegin (int) const noexcept
 Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.
 
const_reverse_iterator crbegin (int) const noexcept
 Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.
 
reverse_iterator rend (int) const noexcept
 Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.
 
const_reverse_iterator crend (int) const noexcept
 Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.
 
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 at (const size_type pos) const noexcept
 Returns the entity at specified location, with bounds checking.
 
entity_type operator[] (const size_type pos) const noexcept
 Returns the entity at specified location, without bounds checking.
 
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
 Returns the element assigned to an entity, if any.
 
iterator push (const entity_type entt, const void *elem=nullptr)
 Assigns an entity to a sparse set.
 
template<typename It >
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.
 
template<typename It >
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.
 
template<typename It >
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.
 
template<typename Compare , typename Sort = std_sort, typename... Args>
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.
 
template<typename Compare , typename Sort = std_sort, typename... Args>
void sort (Compare compare, Sort algo=Sort{}, Args &&...args)
 Sort all elements according to the given comparison function.
 
template<typename It >
void sort_as (It first, It last)
 Sort entities according to their order in a range.
 
void sort_as (const basic_sparse_set &other)
 Sort entities according to their order in a range.
 
void clear ()
 Clears a sparse set.
 
const type_infotype () const noexcept
 Returned value type, if any.
 
virtual void bind (any) noexcept
 Forwards variables to derived classes, if any.
 

Protected Types

using basic_iterator = internal::sparse_set_iterator< packed_container_type >
 Random access iterator type.
 

Protected Member Functions

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 pop (basic_iterator first, basic_iterator last)
 Erases entities from a sparse set.
 
virtual void pop_all ()
 Erases all entities of a sparse set.
 
virtual basic_iterator try_emplace (const Entity entt, const bool force_back, const void *=nullptr)
 Assigns an entity to a sparse set.
 

Detailed Description

template<typename Entity, typename Allocator>
class entt::basic_sparse_set< Entity, Allocator >

Basic sparse set implementation.

Sparse set or packed array or whatever is the name users give it.
Two arrays: an external one and an internal one; a sparse one and a packed one; one used for direct access through contiguous memory, the other one used to get the data through an extra level of indirection.
This type of data structure is widely documented in the literature and on the web. This is nothing more than a customized implementation suitable for the purpose of the framework.

Note
Internal data structures arrange elements to maximize performance. There are no guarantees that entities are returned in the insertion order when iterate a sparse set. Do not make assumption on the order in any case.
Template Parameters
EntityA valid entity type.
AllocatorType of allocator used to manage memory and elements.

Definition at line 158 of file sparse_set.hpp.

Member Typedef Documentation

◆ allocator_type

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::allocator_type = Allocator

Allocator type.

Definition at line 382 of file sparse_set.hpp.

◆ basic_iterator

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::basic_iterator = internal::sparse_set_iterator<packed_container_type>
protected

Random access iterator type.

Definition at line 236 of file sparse_set.hpp.

◆ const_iterator

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::const_iterator = iterator

Constant random access iterator type.

Definition at line 388 of file sparse_set.hpp.

◆ const_reverse_iterator

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::const_reverse_iterator = std::reverse_iterator<const_iterator>

Constant reverse iterator type.

Definition at line 392 of file sparse_set.hpp.

◆ entity_type

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::entity_type = typename traits_type::value_type

Underlying entity identifier.

Definition at line 376 of file sparse_set.hpp.

◆ iterator

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::iterator = basic_iterator

Random access iterator type.

Definition at line 386 of file sparse_set.hpp.

◆ pointer

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::pointer = typename packed_container_type::const_pointer

Pointer type to contained entities.

Definition at line 384 of file sparse_set.hpp.

◆ reverse_iterator

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::reverse_iterator = std::reverse_iterator<iterator>

Reverse iterator type.

Definition at line 390 of file sparse_set.hpp.

◆ size_type

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::size_type = std::size_t

Unsigned integer type.

Definition at line 380 of file sparse_set.hpp.

◆ traits_type

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::traits_type = entt_traits<Entity>

Entity traits.

Definition at line 374 of file sparse_set.hpp.

◆ version_type

template<typename Entity , typename Allocator >
using entt::basic_sparse_set< Entity, Allocator >::version_type = typename traits_type::version_type

Underlying version type.

Definition at line 378 of file sparse_set.hpp.

Constructor & Destructor Documentation

◆ basic_sparse_set() [1/6]

template<typename Entity , typename Allocator >
entt::basic_sparse_set< Entity, Allocator >::basic_sparse_set ( )
inline

Default constructor.

Definition at line 395 of file sparse_set.hpp.

◆ basic_sparse_set() [2/6]

template<typename Entity , typename Allocator >
entt::basic_sparse_set< Entity, Allocator >::basic_sparse_set ( const allocator_type allocator)
inlineexplicit

Constructs an empty container with a given allocator.

Parameters
allocatorThe allocator to use.

Definition at line 402 of file sparse_set.hpp.

◆ basic_sparse_set() [3/6]

template<typename Entity , typename Allocator >
entt::basic_sparse_set< Entity, Allocator >::basic_sparse_set ( deletion_policy  pol,
const allocator_type allocator = {} 
)
inlineexplicit

Constructs an empty container with the given policy and allocator.

Parameters
polType of deletion policy.
allocatorThe allocator to use (possibly default-constructed).

Definition at line 410 of file sparse_set.hpp.

◆ basic_sparse_set() [4/6]

template<typename Entity , typename Allocator >
entt::basic_sparse_set< Entity, Allocator >::basic_sparse_set ( const type_info elem,
deletion_policy  pol = deletion_policy::swap_and_pop,
const allocator_type allocator = {} 
)
inlineexplicit

Constructs an empty container with the given value type, policy and allocator.

Parameters
elemReturned value type, if any.
polType of deletion policy.
allocatorThe allocator to use (possibly default-constructed).

Definition at line 420 of file sparse_set.hpp.

◆ basic_sparse_set() [5/6]

template<typename Entity , typename Allocator >
entt::basic_sparse_set< Entity, Allocator >::basic_sparse_set ( basic_sparse_set< Entity, Allocator > &&  other)
inlinenoexcept

Move constructor.

Parameters
otherThe instance to move from.

Definition at line 431 of file sparse_set.hpp.

◆ basic_sparse_set() [6/6]

template<typename Entity , typename Allocator >
entt::basic_sparse_set< Entity, Allocator >::basic_sparse_set ( basic_sparse_set< Entity, Allocator > &&  other,
const allocator_type allocator 
)
inlinenoexcept

Allocator-extended move constructor.

Parameters
otherThe instance to move from.
allocatorThe allocator to use.

Definition at line 443 of file sparse_set.hpp.

◆ ~basic_sparse_set()

template<typename Entity , typename Allocator >
virtual entt::basic_sparse_set< Entity, Allocator >::~basic_sparse_set ( )
inlinevirtual

Default destructor.

Definition at line 453 of file sparse_set.hpp.

Member Function Documentation

◆ at()

template<typename Entity , typename Allocator >
entity_type entt::basic_sparse_set< Entity, Allocator >::at ( const size_type  pos) const
inlinenoexcept

Returns the entity at specified location, with bounds checking.

Parameters
posThe position for which to return the entity.
Returns
The entity at specified location if any, a null entity otherwise.

Definition at line 757 of file sparse_set.hpp.

◆ begin() [1/2]

template<typename Entity , typename Allocator >
iterator entt::basic_sparse_set< Entity, Allocator >::begin ( ) const
inlinenoexcept

Returns an iterator to the beginning.

If the sparse set is empty, the returned iterator will be equal to end().

Returns
An iterator to the first entity of the sparse set.

Definition at line 606 of file sparse_set.hpp.

◆ begin() [2/2]

template<typename Entity , typename Allocator >
iterator entt::basic_sparse_set< Entity, Allocator >::begin ( int  ) const
inlinenoexcept

Returns an iterator to the beginning. Useful only in case of swap-only policy.

If the sparse set is empty, the returned iterator will be equal to end().

Returns
An iterator to the first entity of the sparse set. Useful only in case of swap-only policy.

Definition at line 663 of file sparse_set.hpp.

◆ bind()

template<typename Entity , typename Allocator >
virtual void entt::basic_sparse_set< Entity, Allocator >::bind ( any  )
inlinevirtualnoexcept

Forwards variables to derived classes, if any.

Definition at line 1094 of file sparse_set.hpp.

◆ bump()

template<typename Entity , typename Allocator >
version_type entt::basic_sparse_set< Entity, Allocator >::bump ( const entity_type  entt)
inline

Bump the version number of an entity.

Warning
Attempting to bump the version of an entity that doesn't belong to the sparse set results in undefined behavior.
Parameters
enttA valid identifier.
Returns
The version of the given identifier.

Definition at line 838 of file sparse_set.hpp.

◆ capacity()

template<typename Entity , typename Allocator >
virtual size_type entt::basic_sparse_set< Entity, Allocator >::capacity ( ) const
inlinevirtualnoexcept

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

Returns
Capacity of the sparse set.

Reimplemented in entt::basic_storage< Type, Entity, Allocator, typename >, and entt::basic_storage< Mask, Registry::entity_type, Allocator >.

Definition at line 537 of file sparse_set.hpp.

◆ cbegin() [1/2]

template<typename Entity , typename Allocator >
const_iterator entt::basic_sparse_set< Entity, Allocator >::cbegin ( ) const
inlinenoexcept

Returns an iterator to the beginning.

If the sparse set is empty, the returned iterator will be equal to end().

Returns
An iterator to the first entity of the sparse set.

Definition at line 612 of file sparse_set.hpp.

◆ cbegin() [2/2]

template<typename Entity , typename Allocator >
const_iterator entt::basic_sparse_set< Entity, Allocator >::cbegin ( int  ) const
inlinenoexcept

Returns an iterator to the beginning. Useful only in case of swap-only policy.

If the sparse set is empty, the returned iterator will be equal to end().

Returns
An iterator to the first entity of the sparse set. Useful only in case of swap-only policy.

Definition at line 668 of file sparse_set.hpp.

◆ cend() [1/2]

template<typename Entity , typename Allocator >
const_iterator entt::basic_sparse_set< Entity, Allocator >::cend ( ) const
inlinenoexcept

Returns an iterator to the end.

Returns
An iterator to the element following the last entity of a sparse set.

Definition at line 626 of file sparse_set.hpp.

◆ cend() [2/2]

template<typename Entity , typename Allocator >
const_iterator entt::basic_sparse_set< Entity, Allocator >::cend ( int  ) const
inlinenoexcept

Returns an iterator to the end. Useful only in case of swap-only policy.

Returns
An iterator to the element following the last entity of a sparse set. Useful only in case of swap-only policy.

Definition at line 678 of file sparse_set.hpp.

◆ clear()

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::clear ( )
inline

Clears a sparse set.

Definition at line 1077 of file sparse_set.hpp.

◆ compact()

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::compact ( )
inline

Removes all tombstones from a sparse set.

Definition at line 925 of file sparse_set.hpp.

◆ contains()

template<typename Entity , typename Allocator >
bool entt::basic_sparse_set< Entity, Allocator >::contains ( const entity_type  entt) const
inlinenoexcept

Checks if a sparse set contains an entity.

Parameters
enttA valid identifier.
Returns
True if the sparse set contains the entity, false otherwise.

Definition at line 717 of file sparse_set.hpp.

◆ contiguous()

template<typename Entity , typename Allocator >
bool entt::basic_sparse_set< Entity, Allocator >::contiguous ( ) const
inlinenoexcept

Checks whether a sparse set is fully packed.

Returns
True if the sparse set is fully packed, false otherwise.

Definition at line 586 of file sparse_set.hpp.

◆ crbegin() [1/2]

template<typename Entity , typename Allocator >
const_reverse_iterator entt::basic_sparse_set< Entity, Allocator >::crbegin ( ) const
inlinenoexcept

Returns a reverse iterator to the beginning.

If the sparse set is empty, the returned iterator will be equal to rend().

Returns
An iterator to the first entity of the reversed internal packed array.

Definition at line 644 of file sparse_set.hpp.

◆ crbegin() [2/2]

template<typename Entity , typename Allocator >
const_reverse_iterator entt::basic_sparse_set< Entity, Allocator >::crbegin ( int  ) const
inlinenoexcept

Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.

If the sparse set is empty, the returned iterator will be equal to rend().

Returns
An iterator to the first entity of the reversed internal packed array. Useful only in case of swap-only policy.

Definition at line 688 of file sparse_set.hpp.

◆ crend() [1/2]

template<typename Entity , typename Allocator >
const_reverse_iterator entt::basic_sparse_set< Entity, Allocator >::crend ( ) const
inlinenoexcept

Returns a reverse iterator to the end.

Returns
An iterator to the element following the last entity of the reversed sparse set.

Definition at line 658 of file sparse_set.hpp.

◆ crend() [2/2]

template<typename Entity , typename Allocator >
const_reverse_iterator entt::basic_sparse_set< Entity, Allocator >::crend ( int  ) const
inlinenoexcept

Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.

If the sparse set is empty, the returned iterator will be equal to rend().

Returns
An iterator to the first entity of the reversed internal packed array. Useful only in case of swap-only policy.

Definition at line 698 of file sparse_set.hpp.

◆ current()

template<typename Entity , typename Allocator >
version_type entt::basic_sparse_set< Entity, Allocator >::current ( const entity_type  entt) const
inlinenoexcept

Returns the contained version for an identifier.

Parameters
enttA valid identifier.
Returns
The version for the given identifier if present, the tombstone version otherwise.

Definition at line 731 of file sparse_set.hpp.

◆ data()

template<typename Entity , typename Allocator >
pointer entt::basic_sparse_set< Entity, Allocator >::data ( ) const
inlinenoexcept

Direct access to the internal packed array.

Returns
A pointer to the internal packed array.

Definition at line 594 of file sparse_set.hpp.

◆ empty()

template<typename Entity , typename Allocator >
bool entt::basic_sparse_set< Entity, Allocator >::empty ( ) const
inlinenoexcept

Checks whether a sparse set is empty.

Returns
True if the sparse set is empty, false otherwise.

Definition at line 578 of file sparse_set.hpp.

◆ end() [1/2]

template<typename Entity , typename Allocator >
iterator entt::basic_sparse_set< Entity, Allocator >::end ( ) const
inlinenoexcept

Returns an iterator to the end.

Returns
An iterator to the element following the last entity of a sparse set.

Definition at line 621 of file sparse_set.hpp.

◆ end() [2/2]

template<typename Entity , typename Allocator >
iterator entt::basic_sparse_set< Entity, Allocator >::end ( int  ) const
inlinenoexcept

Returns an iterator to the end. Useful only in case of swap-only policy.

Returns
An iterator to the element following the last entity of a sparse set. Useful only in case of swap-only policy.

Definition at line 673 of file sparse_set.hpp.

◆ erase() [1/2]

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::erase ( const entity_type  entt)
inline

Erases an entity from a sparse set.

Warning
Attempting to erase an entity that doesn't belong to the sparse set results in undefined behavior.
Parameters
enttA valid identifier.

Definition at line 855 of file sparse_set.hpp.

◆ erase() [2/2]

template<typename Entity , typename Allocator >
template<typename It >
void entt::basic_sparse_set< Entity, Allocator >::erase ( It  first,
It  last 
)
inline

Erases entities from a set.

See also
erase
Template Parameters
ItType of input iterator.
Parameters
firstAn iterator to the first element of the range of entities.
lastAn iterator past the last element of the range of entities.

Definition at line 870 of file sparse_set.hpp.

◆ extent()

template<typename Entity , typename Allocator >
size_type entt::basic_sparse_set< Entity, Allocator >::extent ( ) const
inlinenoexcept

Returns the extent of a sparse set.

The extent of a sparse set is also the size of the internal sparse array. There is no guarantee that the internal packed array has the same size. Usually the size of the internal sparse array is equal or greater than the one of the internal packed array.

Returns
Extent of the sparse set.

Definition at line 556 of file sparse_set.hpp.

◆ find()

template<typename Entity , typename Allocator >
const_iterator entt::basic_sparse_set< Entity, Allocator >::find ( const entity_type  entt) const
inlinenoexcept

Finds an entity.

Parameters
enttA valid identifier.
Returns
An iterator to the given entity if it's found, past the end iterator otherwise.

Definition at line 708 of file sparse_set.hpp.

◆ free_list() [1/2]

template<typename Entity , typename Allocator >
size_type entt::basic_sparse_set< Entity, Allocator >::free_list ( ) const
inlinenoexcept

Returns the head of the free list, if any.

Returns
The head of the free list.

Definition at line 507 of file sparse_set.hpp.

◆ free_list() [2/2]

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::free_list ( const size_type  len)
inlinenoexcept

Sets the head of the free list, if possible.

Parameters
lenThe value to use as the new head of the free list.

Definition at line 515 of file sparse_set.hpp.

◆ get_allocator()

template<typename Entity , typename Allocator >
constexpr allocator_type entt::basic_sparse_set< Entity, Allocator >::get_allocator ( ) const
inlineconstexprnoexcept

Returns the associated allocator.

Returns
The associated allocator.

Definition at line 491 of file sparse_set.hpp.

◆ in_place_pop()

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::in_place_pop ( const basic_iterator  it)
inlineprotected

Erases an entity from a sparse set.

Parameters
itAn iterator to the element to pop.

Definition at line 270 of file sparse_set.hpp.

◆ index()

template<typename Entity , typename Allocator >
size_type entt::basic_sparse_set< Entity, Allocator >::index ( const entity_type  entt) const
inlinenoexcept

Returns the position of an entity in a sparse set.

Warning
Attempting to get the position of an entity that doesn't belong to the sparse set results in undefined behavior.
Parameters
enttA valid identifier.
Returns
The position of the entity in the sparse set.

Definition at line 747 of file sparse_set.hpp.

◆ operator=()

template<typename Entity , typename Allocator >
basic_sparse_set & entt::basic_sparse_set< Entity, Allocator >::operator= ( basic_sparse_set< Entity, Allocator > &&  other)
inlinenoexcept

Move assignment operator.

Parameters
otherThe instance to move from.
Returns
This sparse set.

Definition at line 462 of file sparse_set.hpp.

◆ operator[]()

template<typename Entity , typename Allocator >
entity_type entt::basic_sparse_set< Entity, Allocator >::operator[] ( const size_type  pos) const
inlinenoexcept

Returns the entity at specified location, without bounds checking.

Parameters
posThe position for which to return the entity.
Returns
The entity at specified location.

Definition at line 766 of file sparse_set.hpp.

◆ policy()

template<typename Entity , typename Allocator >
deletion_policy entt::basic_sparse_set< Entity, Allocator >::policy ( ) const
inlinenoexcept

Returns the deletion policy of a sparse set.

Returns
The deletion policy of the sparse set.

Definition at line 499 of file sparse_set.hpp.

◆ pop()

template<typename Entity , typename Allocator >
virtual void entt::basic_sparse_set< Entity, Allocator >::pop ( basic_iterator  first,
basic_iterator  last 
)
inlineprotectedvirtual

Erases entities from a sparse set.

Parameters
firstAn iterator to the first element of the range of entities.
lastAn iterator past the last element of the range of entities.

Reimplemented in entt::basic_storage< Type, Entity, Allocator, typename >, and entt::basic_storage< Mask, Registry::entity_type, Allocator >.

Definition at line 282 of file sparse_set.hpp.

◆ pop_all()

template<typename Entity , typename Allocator >
virtual void entt::basic_sparse_set< Entity, Allocator >::pop_all ( )
inlineprotectedvirtual

Erases all entities of a sparse set.

Reimplemented in entt::basic_storage< Type, Entity, Allocator, typename >, and entt::basic_storage< Mask, Registry::entity_type, Allocator >.

Definition at line 303 of file sparse_set.hpp.

◆ push() [1/2]

template<typename Entity , typename Allocator >
iterator entt::basic_sparse_set< Entity, Allocator >::push ( const entity_type  entt,
const void *  elem = nullptr 
)
inline

Assigns an entity to a sparse set.

Warning
Attempting to assign an entity that already belongs to the sparse set results in undefined behavior.
Parameters
enttA valid identifier.
elemOptional opaque element to forward to mixins, if any.
Returns
Iterator pointing to the emplaced element in case of success, the end() iterator otherwise.

Definition at line 802 of file sparse_set.hpp.

◆ push() [2/2]

template<typename Entity , typename Allocator >
template<typename It >
iterator entt::basic_sparse_set< Entity, Allocator >::push ( It  first,
It  last 
)
inline

Assigns one or more entities to a sparse set.

Warning
Attempting to assign an entity that already belongs to the sparse set results in undefined behavior.
Template Parameters
ItType of input iterator.
Parameters
firstAn iterator to the first element of the range of entities.
lastAn iterator past the last element of the range of entities.
Returns
Iterator pointing to the first element inserted in case of success, the end() iterator otherwise.

Definition at line 820 of file sparse_set.hpp.

◆ rbegin() [1/2]

template<typename Entity , typename Allocator >
reverse_iterator entt::basic_sparse_set< Entity, Allocator >::rbegin ( ) const
inlinenoexcept

Returns a reverse iterator to the beginning.

If the sparse set is empty, the returned iterator will be equal to rend().

Returns
An iterator to the first entity of the reversed internal packed array.

Definition at line 639 of file sparse_set.hpp.

◆ rbegin() [2/2]

template<typename Entity , typename Allocator >
reverse_iterator entt::basic_sparse_set< Entity, Allocator >::rbegin ( int  ) const
inlinenoexcept

Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.

If the sparse set is empty, the returned iterator will be equal to rend().

Returns
An iterator to the first entity of the reversed internal packed array. Useful only in case of swap-only policy.

Definition at line 683 of file sparse_set.hpp.

◆ remove() [1/2]

template<typename Entity , typename Allocator >
bool entt::basic_sparse_set< Entity, Allocator >::remove ( const entity_type  entt)
inline

Removes an entity from a sparse set if it exists.

Parameters
enttA valid identifier.
Returns
True if the entity is actually removed, false otherwise.

Definition at line 885 of file sparse_set.hpp.

◆ remove() [2/2]

template<typename Entity , typename Allocator >
template<typename It >
size_type entt::basic_sparse_set< Entity, Allocator >::remove ( It  first,
It  last 
)
inline

Removes entities from a sparse set if they exist.

Template Parameters
ItType of input iterator.
Parameters
firstAn iterator to the first element of the range of entities.
lastAn iterator past the last element of the range of entities.
Returns
The number of entities actually removed.

Definition at line 897 of file sparse_set.hpp.

◆ rend() [1/2]

template<typename Entity , typename Allocator >
reverse_iterator entt::basic_sparse_set< Entity, Allocator >::rend ( ) const
inlinenoexcept

Returns a reverse iterator to the end.

Returns
An iterator to the element following the last entity of the reversed sparse set.

Definition at line 653 of file sparse_set.hpp.

◆ rend() [2/2]

template<typename Entity , typename Allocator >
reverse_iterator entt::basic_sparse_set< Entity, Allocator >::rend ( int  ) const
inlinenoexcept

Returns a reverse iterator to the beginning. Useful only in case of swap-only policy.

If the sparse set is empty, the returned iterator will be equal to rend().

Returns
An iterator to the first entity of the reversed internal packed array. Useful only in case of swap-only policy.

Definition at line 693 of file sparse_set.hpp.

◆ reserve()

template<typename Entity , typename Allocator >
virtual void entt::basic_sparse_set< Entity, Allocator >::reserve ( const size_type  cap)
inlinevirtual

Increases the capacity of a sparse set.

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

Parameters
capDesired capacity.

Reimplemented in entt::basic_storage< Type, Entity, Allocator, typename >, and entt::basic_storage< Mask, Registry::entity_type, Allocator >.

Definition at line 528 of file sparse_set.hpp.

◆ shrink_to_fit()

template<typename Entity , typename Allocator >
virtual void entt::basic_sparse_set< Entity, Allocator >::shrink_to_fit ( )
inlinevirtual

Requests the removal of unused capacity.

Reimplemented in entt::basic_storage< Type, Entity, Allocator, typename >, and entt::basic_storage< Mask, Registry::entity_type, Allocator >.

Definition at line 542 of file sparse_set.hpp.

◆ size()

template<typename Entity , typename Allocator >
size_type entt::basic_sparse_set< Entity, Allocator >::size ( ) const
inlinenoexcept

Returns the number of elements in a sparse set.

The number of elements is also the size of the internal packed array. There is no guarantee that the internal sparse array has the same size. Usually the size of the internal sparse array is equal or greater than the one of the internal packed array.

Returns
Number of elements.

Definition at line 570 of file sparse_set.hpp.

◆ sort()

template<typename Entity , typename Allocator >
template<typename Compare , typename Sort = std_sort, typename... Args>
void entt::basic_sparse_set< Entity, Allocator >::sort ( Compare  compare,
Sort  algo = Sort{},
Args &&...  args 
)
inline

Sort all elements according to the given comparison function.

See also
sort_n
Template Parameters
CompareType of comparison function object.
SortType of sort function object.
ArgsTypes of arguments to forward to the sort function object.
Parameters
compareA valid comparison function object.
algoA valid sort function object.
argsArguments to forward to the sort function object, if any.

Definition at line 1036 of file sparse_set.hpp.

◆ sort_as() [1/2]

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::sort_as ( const basic_sparse_set< Entity, Allocator > &  other)
inline

Sort entities according to their order in a range.

Parameters
otherThe sparse sets that imposes the order of the entities.

Definition at line 1072 of file sparse_set.hpp.

◆ sort_as() [2/2]

template<typename Entity , typename Allocator >
template<typename It >
void entt::basic_sparse_set< Entity, Allocator >::sort_as ( It  first,
It  last 
)
inline

Sort entities according to their order in a range.

Entities that are part of both the sparse set and the range are ordered internally according to the order they have in the range.
All other entities goes to the end of the sparse set and there are no guarantees on their order.

Template Parameters
ItType of input iterator.
Parameters
firstAn iterator to the first element of the range of entities.
lastAn iterator past the last element of the range of entities.

Definition at line 1053 of file sparse_set.hpp.

◆ sort_n()

template<typename Entity , typename Allocator >
template<typename Compare , typename Sort = std_sort, typename... Args>
void entt::basic_sparse_set< Entity, Allocator >::sort_n ( const size_type  length,
Compare  compare,
Sort  algo = Sort{},
Args &&...  args 
)
inline

Sort the first count elements according to the given comparison function.

The comparison function object must return true if the first element is less than the second one, false otherwise. The signature of the comparison function should be equivalent to the following:

bool(const Entity, const Entity);

Moreover, the comparison function object shall induce a strict weak ordering on the values.

The sort function object must offer a member function template operator() that accepts three arguments:

  • An iterator to the first element of the range to sort.
  • An iterator past the last element of the range to sort.
  • A comparison function to use to compare the elements.
Template Parameters
CompareType of comparison function object.
SortType of sort function object.
ArgsTypes of arguments to forward to the sort function object.
Parameters
lengthNumber of elements to sort.
compareA valid comparison function object.
algoA valid sort function object.
argsArguments to forward to the sort function object, if any.

Definition at line 1001 of file sparse_set.hpp.

◆ swap()

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::swap ( basic_sparse_set< Entity, Allocator > &  other)
inline

Exchanges the contents with those of a given sparse set.

Parameters
otherSparse set to exchange the content with.

Definition at line 478 of file sparse_set.hpp.

◆ swap_and_pop()

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::swap_and_pop ( const basic_iterator  it)
inlineprotected

Erases an entity from a sparse set.

Parameters
itAn iterator to the element to pop.

Definition at line 253 of file sparse_set.hpp.

◆ swap_elements()

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::swap_elements ( const entity_type  lhs,
const entity_type  rhs 
)
inline

Swaps two entities in a sparse set.

For what it's worth, this function affects both the internal sparse array and the internal packed array. Users should not care of that anyway.

Warning
Attempting to swap entities that don't belong to the sparse set results in undefined behavior.
Parameters
lhsA valid identifier.
rhsA valid identifier.

Definition at line 961 of file sparse_set.hpp.

◆ swap_only()

template<typename Entity , typename Allocator >
void entt::basic_sparse_set< Entity, Allocator >::swap_only ( const basic_iterator  it)
inlineprotected

Erases an entity from a sparse set.

Parameters
itAn iterator to the element to pop.

Definition at line 242 of file sparse_set.hpp.

◆ try_emplace()

template<typename Entity , typename Allocator >
virtual basic_iterator entt::basic_sparse_set< Entity, Allocator >::try_emplace ( const Entity  entt,
const bool  force_back,
const void *  = nullptr 
)
inlineprotectedvirtual

Assigns an entity to a sparse set.

Parameters
enttA valid identifier.
force_backForce back insertion.
Returns
Iterator pointing to the emplaced element.

Reimplemented in entt::basic_storage< Type, Entity, Allocator, typename >, and entt::basic_storage< Entity, Entity, Allocator >.

Definition at line 333 of file sparse_set.hpp.

◆ type()

template<typename Entity , typename Allocator >
const type_info & entt::basic_sparse_set< Entity, Allocator >::type ( ) const
inlinenoexcept

Returned value type, if any.

Returns
Returned value type, if any.

Definition at line 1089 of file sparse_set.hpp.

◆ value() [1/2]

template<typename Entity , typename Allocator >
const void * entt::basic_sparse_set< Entity, Allocator >::value ( const entity_type  entt) const
inlinenoexcept

Returns the element assigned to an entity, if any.

Warning
Attempting to use an entity that doesn't belong to the sparse set results in undefined behavior.
Parameters
enttA valid identifier.
Returns
An opaque pointer to the element assigned to the entity, if any.

Definition at line 781 of file sparse_set.hpp.

◆ value() [2/2]

template<typename Entity , typename Allocator >
void * entt::basic_sparse_set< Entity, Allocator >::value ( const entity_type  entt)
inlinenoexcept

Returns the element assigned to an entity, if any.

Warning
Attempting to use an entity that doesn't belong to the sparse set results in undefined behavior.
Parameters
enttA valid identifier.
Returns
An opaque pointer to the element assigned to the entity, if any.

Definition at line 786 of file sparse_set.hpp.


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