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

Fast and reliable entity-component system. More...

#include <registry.hpp>

Public Types

using allocator_type = Allocator
 Allocator type.
 
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 common_type = base_type
 Common type among all storage types.
 
using context = internal::registry_context<allocator_type>
 Context type.
 
using iterable = iterable_adaptor<internal::registry_storage_iterator<typename pool_container_type::iterator>>
 Iterable registry type.
 
using const_iterable = iterable_adaptor<internal::registry_storage_iterator<typename pool_container_type::const_iterator>>
 Constant iterable registry type.
 
template<typename Type >
using storage_for_type = typename storage_for<Type, Entity, typename alloc_traits::template rebind_alloc<std::remove_const_t<Type>>>::type
 

Public Member Functions

 basic_registry ()
 Default constructor.
 
 basic_registry (const allocator_type &allocator)
 Constructs an empty registry with a given allocator.
 
 basic_registry (const size_type count, const allocator_type &allocator=allocator_type{})
 Allocates enough memory upon construction to store count pools.
 
 basic_registry (const basic_registry &)=delete
 Default copy constructor, deleted on purpose.
 
 basic_registry (basic_registry &&other) noexcept
 Move constructor.
 
 ~basic_registry ()=default
 Default destructor.
 
basic_registryoperator= (const basic_registry &)=delete
 Default copy assignment operator, deleted on purpose.
 
basic_registryoperator= (basic_registry &&other) noexcept
 Move assignment operator.
 
void swap (basic_registry &other) noexcept
 Exchanges the contents with those of a given registry.
 
constexpr allocator_type get_allocator () const noexcept
 Returns the associated allocator.
 
iterable storage () noexcept
 Returns an iterable object to use to visit a registry.
 
const_iterable storage () const noexcept
 Returns an iterable object to use to visit a registry.
 
common_typestorage (const id_type id)
 Finds the storage associated with a given name, if any.
 
const common_typestorage (const id_type id) const
 Finds the storage associated with a given name, if any.
 
template<typename Type >
storage_for_type< Type > & storage (const id_type id=type_hash< Type >::value())
 Returns the storage for a given element type.
 
template<typename Type >
const storage_for_type< Type > * storage (const id_type id=type_hash< Type >::value()) const
 Returns the storage for a given element type, if any.
 
bool reset (const id_type id)
 Discards the storage associated with a given name, if any.
 
bool valid (const entity_type entt) const
 Checks if an identifier refers to a valid entity.
 
version_type current (const entity_type entt) const
 Returns the actual version for an identifier.
 
entity_type create ()
 Creates a new entity or recycles a destroyed one.
 
entity_type create (const entity_type hint)
 Creates a new entity or recycles a destroyed one.
 
template<typename It >
void create (It first, It last)
 Assigns each element in a range an identifier.
 
version_type destroy (const entity_type entt)
 Destroys an entity and releases its identifier.
 
version_type destroy (const entity_type entt, const version_type version)
 Destroys an entity and releases its identifier.
 
template<typename It >
void destroy (It first, It last)
 Destroys all entities in a range and releases their identifiers.
 
template<typename Type , typename... Args>
decltype(autoemplace (const entity_type entt, Args &&...args)
 Assigns the given element to an entity.
 
template<typename Type , typename It >
void insert (It first, It last, const Type &value={})
 Assigns each entity in a range the given element.
 
template<typename Type , typename EIt , typename CIt , typename = std::enable_if_t<std::is_same_v<typename std::iterator_traits<CIt>::value_type, Type>>>
void insert (EIt first, EIt last, CIt from)
 Assigns each entity in a range the given elements.
 
template<typename Type , typename... Args>
decltype(autoemplace_or_replace (const entity_type entt, Args &&...args)
 Assigns or replaces the given element for an entity.
 
template<typename Type , typename... Func>
decltype(autopatch (const entity_type entt, Func &&...func)
 Patches the given element for an entity.
 
template<typename Type , typename... Args>
decltype(autoreplace (const entity_type entt, Args &&...args)
 Replaces the given element for an entity.
 
template<typename Type , typename... Other>
size_type remove (const entity_type entt)
 Removes the given elements from an entity.
 
template<typename Type , typename... Other, typename It >
size_type remove (It first, It last)
 Removes the given elements from all the entities in a range.
 
template<typename Type , typename... Other>
void erase (const entity_type entt)
 Erases the given elements from an entity.
 
template<typename Type , typename... Other, typename It >
void erase (It first, It last)
 Erases the given elements from all the entities in a range.
 
template<typename Func >
void erase_if (const entity_type entt, Func func)
 Erases elements satisfying specific criteria from an entity.
 
template<typename... Type>
void compact ()
 Removes all tombstones from a registry or only the pools for the given elements.
 
template<typename... Type>
bool all_of (const entity_type entt) const
 Check if an entity is part of all the given storage.
 
template<typename... Type>
bool any_of (const entity_type entt) const
 Check if an entity is part of at least one given storage.
 
template<typename... Type>
decltype(autoget (const entity_type entt) const
 Returns references to the given elements for an entity.
 
template<typename... Type>
decltype(autoget (const entity_type entt)
 Returns references to the given elements for an entity.
 
template<typename Type , typename... Args>
decltype(autoget_or_emplace (const entity_type entt, Args &&...args)
 Returns a reference to the given element for an entity.
 
template<typename... Type>
auto try_get (const entity_type entt) const
 Returns pointers to the given elements for an entity.
 
template<typename... Type>
auto try_get (const entity_type entt)
 Returns pointers to the given elements for an entity.
 
template<typename... Type>
void clear ()
 Clears a whole registry or the pools for the given elements.
 
bool orphan (const entity_type entt) const
 Checks if an entity has elements assigned.
 
template<typename Type >
auto on_construct (const id_type id=type_hash< Type >::value())
 Returns a sink object for the given element.
 
template<typename Type >
auto on_update (const id_type id=type_hash< Type >::value())
 Returns a sink object for the given element.
 
template<typename Type >
auto on_destroy (const id_type id=type_hash< Type >::value())
 Returns a sink object for the given element.
 
template<typename Type , typename... Other, typename... Exclude>
basic_view< get_t< storage_for_type< const Type >, storage_for_type< const Other >... >, exclude_t< storage_for_type< const Exclude >... > > view (exclude_t< Exclude... >=exclude_t{}) const
 Returns a view for the given elements.
 
template<typename Type , typename... Other, typename... Exclude>
basic_view< get_t< storage_for_type< Type >, storage_for_type< Other >... >, exclude_t< storage_for_type< Exclude >... > > view (exclude_t< Exclude... >=exclude_t{})
 Returns a view for the given elements.
 
template<typename... Owned, typename... Get, typename... Exclude>
basic_group< owned_t< storage_for_type< Owned >... >, get_t< storage_for_type< Get >... >, exclude_t< storage_for_type< Exclude >... > > group (get_t< Get... >=get_t{}, exclude_t< Exclude... >=exclude_t{})
 Returns a group for the given elements.
 
template<typename... Owned, typename... Get, typename... Exclude>
basic_group< owned_t< storage_for_type< const Owned >... >, get_t< storage_for_type< const Get >... >, exclude_t< storage_for_type< const Exclude >... > > group_if_exists (get_t< Get... >=get_t{}, exclude_t< Exclude... >=exclude_t{}) const
 Returns a group for the given elements.
 
template<typename... Type>
bool owned () const
 Checks whether the given elements belong to any group.
 
template<typename Type , typename Compare , typename Sort = std_sort, typename... Args>
void sort (Compare compare, Sort algo=Sort{}, Args &&...args)
 Sorts the elements of a given element.
 
template<typename To , typename From >
void sort ()
 Sorts two pools of elements in the same way.
 
contextctx () noexcept
 Returns the context object, that is, a general purpose container.
 
const contextctx () const noexcept
 Returns the context object, that is, a general purpose container.
 

Detailed Description

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

Fast and reliable entity-component system.

Template Parameters
EntityA valid entity type.
AllocatorType of allocator used to manage memory and elements.

Definition at line 234 of file registry.hpp.

Member Typedef Documentation

◆ allocator_type

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

Allocator type.

Definition at line 302 of file registry.hpp.

◆ common_type

template<typename Entity , typename Allocator >
using entt::basic_registry< Entity, Allocator >::common_type = base_type

Common type among all storage types.

Definition at line 310 of file registry.hpp.

◆ const_iterable

template<typename Entity , typename Allocator >
using entt::basic_registry< Entity, Allocator >::const_iterable = iterable_adaptor<internal::registry_storage_iterator<typename pool_container_type::const_iterator>>

Constant iterable registry type.

Definition at line 316 of file registry.hpp.

◆ context

template<typename Entity , typename Allocator >
using entt::basic_registry< Entity, Allocator >::context = internal::registry_context<allocator_type>

Context type.

Definition at line 312 of file registry.hpp.

◆ entity_type

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

Underlying entity identifier.

Definition at line 304 of file registry.hpp.

◆ iterable

template<typename Entity , typename Allocator >
using entt::basic_registry< Entity, Allocator >::iterable = iterable_adaptor<internal::registry_storage_iterator<typename pool_container_type::iterator>>

Iterable registry type.

Definition at line 314 of file registry.hpp.

◆ size_type

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

Unsigned integer type.

Definition at line 308 of file registry.hpp.

◆ storage_for_type

template<typename Entity , typename Allocator >
template<typename Type >
using entt::basic_registry< Entity, Allocator >::storage_for_type = typename storage_for<Type, Entity, typename alloc_traits::template rebind_alloc<std::remove_const_t<Type>>>::type

Template Parameters
TypeStorage value type, eventually const.

Definition at line 323 of file registry.hpp.

◆ version_type

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

Underlying version type.

Definition at line 306 of file registry.hpp.

Constructor & Destructor Documentation

◆ basic_registry() [1/4]

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

Default constructor.

Definition at line 326 of file registry.hpp.

◆ basic_registry() [2/4]

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

Constructs an empty registry with a given allocator.

Parameters
allocatorThe allocator to use.

Definition at line 333 of file registry.hpp.

◆ basic_registry() [3/4]

template<typename Entity , typename Allocator >
entt::basic_registry< Entity, Allocator >::basic_registry ( const size_type count,
const allocator_type & allocator = allocator_type{} )
inline

Allocates enough memory upon construction to store count pools.

Parameters
countThe number of pools to allocate memory for.
allocatorThe allocator to use.

Definition at line 341 of file registry.hpp.

◆ basic_registry() [4/4]

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

Move constructor.

Parameters
otherThe instance to move from.

Definition at line 357 of file registry.hpp.

Member Function Documentation

◆ all_of()

template<typename Entity , typename Allocator >
template<typename... Type>
bool entt::basic_registry< Entity, Allocator >::all_of ( const entity_type entt) const
inline

Check if an entity is part of all the given storage.

Template Parameters
TypeType of storage to check for.
Parameters
enttA valid identifier.
Returns
True if the entity is part of all the storage, false otherwise.

Definition at line 852 of file registry.hpp.

◆ any_of()

template<typename Entity , typename Allocator >
template<typename... Type>
bool entt::basic_registry< Entity, Allocator >::any_of ( const entity_type entt) const
inline

Check if an entity is part of at least one given storage.

Template Parameters
TypeType of storage to check for.
Parameters
enttA valid identifier.
Returns
True if the entity is part of at least one storage, false otherwise.

Definition at line 869 of file registry.hpp.

◆ clear()

template<typename Entity , typename Allocator >
template<typename... Type>
void entt::basic_registry< Entity, Allocator >::clear ( )
inline

Clears a whole registry or the pools for the given elements.

Template Parameters
TypeTypes of elements to remove from their entities.

Definition at line 960 of file registry.hpp.

◆ compact()

template<typename Entity , typename Allocator >
template<typename... Type>
void entt::basic_registry< Entity, Allocator >::compact ( )
inline

Removes all tombstones from a registry or only the pools for the given elements.

Template Parameters
TypeTypes of elements for which to clear all tombstones.

Definition at line 835 of file registry.hpp.

◆ create() [1/3]

template<typename Entity , typename Allocator >
entity_type entt::basic_registry< Entity, Allocator >::create ( )
inline

Creates a new entity or recycles a destroyed one.

Returns
A valid identifier.

Definition at line 499 of file registry.hpp.

◆ create() [2/3]

template<typename Entity , typename Allocator >
entity_type entt::basic_registry< Entity, Allocator >::create ( const entity_type hint)
inline

Creates a new entity or recycles a destroyed one.

If the requested entity isn't in use, the suggested identifier is used. Otherwise, a new identifier is generated.

Parameters
hintRequired identifier.
Returns
A valid identifier.

Definition at line 512 of file registry.hpp.

◆ create() [3/3]

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

Assigns each element in a range an identifier.

See also
create
Template Parameters
ItType of forward iterator.
Parameters
firstAn iterator to the first element of the range to generate.
lastAn iterator past the last element of the range to generate.

Definition at line 526 of file registry.hpp.

◆ ctx() [1/2]

template<typename Entity , typename Allocator >
const context & entt::basic_registry< Entity, Allocator >::ctx ( ) const
inlinenoexcept

Returns the context object, that is, a general purpose container.

Returns
The context object, that is, a general purpose container.

Definition at line 1206 of file registry.hpp.

◆ ctx() [2/2]

template<typename Entity , typename Allocator >
context & entt::basic_registry< Entity, Allocator >::ctx ( )
inlinenoexcept

Returns the context object, that is, a general purpose container.

Returns
The context object, that is, a general purpose container.

Definition at line 1201 of file registry.hpp.

◆ current()

template<typename Entity , typename Allocator >
version_type entt::basic_registry< Entity, Allocator >::current ( const entity_type entt) const
inline

Returns the actual version for an identifier.

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

Definition at line 491 of file registry.hpp.

◆ destroy() [1/3]

template<typename Entity , typename Allocator >
version_type entt::basic_registry< Entity, Allocator >::destroy ( const entity_type entt)
inline

Destroys an entity and releases its identifier.

Warning
Adding or removing elements to an entity that is being destroyed can result in undefined behavior.
Parameters
enttA valid identifier.
Returns
The version of the recycled entity.

Definition at line 540 of file registry.hpp.

◆ destroy() [2/3]

template<typename Entity , typename Allocator >
version_type entt::basic_registry< Entity, Allocator >::destroy ( const entity_type entt,
const version_type version )
inline

Destroys an entity and releases its identifier.

The suggested version or the valid version closest to the suggested one is used instead of the implicitly generated version.

See also
destroy
Parameters
enttA valid identifier.
versionA desired version upon destruction.
Returns
The version actually assigned to the entity.

Definition at line 561 of file registry.hpp.

◆ destroy() [3/3]

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

Destroys all entities in a range and releases their identifiers.

See also
destroy
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 577 of file registry.hpp.

◆ emplace()

template<typename Entity , typename Allocator >
template<typename Type , typename... Args>
decltype(auto) entt::basic_registry< Entity, Allocator >::emplace ( const entity_type entt,
Args &&... args )
inline

Assigns the given element to an entity.

The element must have a proper constructor or be of aggregate type.

Warning
Attempting to assign an element to an entity that already owns it results in undefined behavior.
Template Parameters
TypeType of element to create.
ArgsTypes of arguments to use to construct the element.
Parameters
enttA valid identifier.
argsParameters to use to initialize the element.
Returns
A reference to the newly created element.

Definition at line 604 of file registry.hpp.

◆ emplace_or_replace()

template<typename Entity , typename Allocator >
template<typename Type , typename... Args>
decltype(auto) entt::basic_registry< Entity, Allocator >::emplace_or_replace ( const entity_type entt,
Args &&... args )
inline

Assigns or replaces the given element for an entity.

See also
emplace
replace
Template Parameters
TypeType of element to assign or replace.
ArgsTypes of arguments to use to construct the element.
Parameters
enttA valid identifier.
argsParameters to use to initialize the element.
Returns
A reference to the newly created element.

Definition at line 657 of file registry.hpp.

◆ erase() [1/2]

template<typename Entity , typename Allocator >
template<typename Type , typename... Other>
void entt::basic_registry< Entity, Allocator >::erase ( const entity_type entt)
inline

Erases the given elements from an entity.

Warning
Attempting to erase an element from an entity that doesn't own it results in undefined behavior.
Template Parameters
TypeTypes of elements to erase.
OtherOther types of elements to erase.
Parameters
enttA valid identifier.

Definition at line 769 of file registry.hpp.

◆ erase() [2/2]

template<typename Entity , typename Allocator >
template<typename Type , typename... Other, typename It >
void entt::basic_registry< Entity, Allocator >::erase ( It first,
It last )
inline

Erases the given elements from all the entities in a range.

See also
erase
Template Parameters
TypeTypes of elements to erase.
OtherOther types of elements to erase.
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 785 of file registry.hpp.

◆ erase_if()

template<typename Entity , typename Allocator >
template<typename Func >
void entt::basic_registry< Entity, Allocator >::erase_if ( const entity_type entt,
Func func )
inline

Erases elements satisfying specific criteria from an entity.

The function type is equivalent to:

Sparse set implementation.
constexpr Type make_obj_using_allocator(const Allocator &allocator, Args &&...args)
Uses-allocator construction utility (waiting for C++20).
Definition memory.hpp:219
std::uint32_t id_type
Alias declaration for type identifiers.
Definition fwd.hpp:14

Only storage where the entity exists are passed to the function.

Template Parameters
FuncType of the function object to invoke.
Parameters
enttA valid identifier.
funcA valid function object.

Definition at line 821 of file registry.hpp.

◆ get() [1/2]

template<typename Entity , typename Allocator >
template<typename... Type>
decltype(auto) entt::basic_registry< Entity, Allocator >::get ( const entity_type entt)
inline

Returns references to the given elements for an entity.

Warning
Attempting to get an element from an entity that doesn't own it results in undefined behavior.
Template Parameters
TypeTypes of elements to get.
Parameters
enttA valid identifier.
Returns
References to the elements owned by the entity.

Definition at line 895 of file registry.hpp.

◆ get() [2/2]

template<typename Entity , typename Allocator >
template<typename... Type>
decltype(auto) entt::basic_registry< Entity, Allocator >::get ( const entity_type entt) const
inline

Returns references to the given elements for an entity.

Warning
Attempting to get an element from an entity that doesn't own it results in undefined behavior.
Template Parameters
TypeTypes of elements to get.
Parameters
enttA valid identifier.
Returns
References to the elements owned by the entity.

Definition at line 885 of file registry.hpp.

◆ get_allocator()

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

Returns the associated allocator.

Returns
The associated allocator.

Definition at line 404 of file registry.hpp.

◆ get_or_emplace()

template<typename Entity , typename Allocator >
template<typename Type , typename... Args>
decltype(auto) entt::basic_registry< Entity, Allocator >::get_or_emplace ( const entity_type entt,
Args &&... args )
inline

Returns a reference to the given element for an entity.

In case the entity doesn't own the element, the parameters provided are used to construct it.

See also
get
emplace
Template Parameters
TypeType of element to get.
ArgsTypes of arguments to use to construct the element.
Parameters
enttA valid identifier.
argsParameters to use to initialize the element.
Returns
Reference to the element owned by the entity.

Definition at line 919 of file registry.hpp.

◆ group()

template<typename Entity , typename Allocator >
template<typename... Owned, typename... Get, typename... Exclude>
basic_group< owned_t< storage_for_type< Owned >... >, get_t< storage_for_type< Get >... >, exclude_t< storage_for_type< Exclude >... > > entt::basic_registry< Entity, Allocator >::group ( get_t< Get... > = get_t{},
exclude_t< Exclude... > = exclude_t{} )
inline

Returns a group for the given elements.

Template Parameters
OwnedTypes of storage owned by the group.
GetTypes of storage observed by the group, if any.
ExcludeTypes of storage used to filter the group, if any.
Returns
A newly created group.

Definition at line 1085 of file registry.hpp.

◆ group_if_exists()

template<typename Entity , typename Allocator >
template<typename... Owned, typename... Get, typename... Exclude>
basic_group< owned_t< storage_for_type< const Owned >... >, get_t< storage_for_type< const Get >... >, exclude_t< storage_for_type< const Exclude >... > > entt::basic_registry< Entity, Allocator >::group_if_exists ( get_t< Get... > = get_t{},
exclude_t< Exclude... > = exclude_t{} ) const
inline

Returns a group for the given elements.

Template Parameters
OwnedTypes of storage owned by the group.
GetTypes of storage observed by the group, if any.
ExcludeTypes of storage used to filter the group, if any.
Returns
A newly created group.

Definition at line 1109 of file registry.hpp.

◆ insert() [1/2]

template<typename Entity , typename Allocator >
template<typename Type , typename EIt , typename CIt , typename = std::enable_if_t<std::is_same_v<typename std::iterator_traits<CIt>::value_type, Type>>>
void entt::basic_registry< Entity, Allocator >::insert ( EIt first,
EIt last,
CIt from )
inline

Assigns each entity in a range the given elements.

See also
emplace
Template Parameters
TypeType of element to create.
EItType of input iterator.
CItType 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.
fromAn iterator to the first element of the range of elements.

Definition at line 639 of file registry.hpp.

◆ insert() [2/2]

template<typename Entity , typename Allocator >
template<typename Type , typename It >
void entt::basic_registry< Entity, Allocator >::insert ( It first,
It last,
const Type & value = {} )
inline

Assigns each entity in a range the given element.

See also
emplace
Template Parameters
TypeType of element to create.
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.
valueAn instance of the element to assign.

Definition at line 621 of file registry.hpp.

◆ on_construct()

template<typename Entity , typename Allocator >
template<typename Type >
auto entt::basic_registry< Entity, Allocator >::on_construct ( const id_type id = type_hash<Type>::value())
inline

Returns a sink object for the given element.

Use this function to receive notifications whenever a new instance of the given element is created and assigned to an entity.
The function type for a listener is equivalent to:

Fast and reliable entity-component system.
Definition registry.hpp:234

Listeners are invoked after assigning the element to the entity.

See also
sink
Template Parameters
TypeType of element of which to get the sink.
Parameters
idOptional name used to map the storage within the registry.
Returns
A temporary sink object.

Definition at line 1002 of file registry.hpp.

◆ on_destroy()

template<typename Entity , typename Allocator >
template<typename Type >
auto entt::basic_registry< Entity, Allocator >::on_destroy ( const id_type id = type_hash<Type>::value())
inline

Returns a sink object for the given element.

Use this function to receive notifications whenever an instance of the given element is removed from an entity and thus destroyed.
The function type for a listener is equivalent to:

Listeners are invoked before removing the element from the entity.

See also
sink
Template Parameters
TypeType of element of which to get the sink.
Parameters
idOptional name used to map the storage within the registry.
Returns
A temporary sink object.

Definition at line 1050 of file registry.hpp.

◆ on_update()

template<typename Entity , typename Allocator >
template<typename Type >
auto entt::basic_registry< Entity, Allocator >::on_update ( const id_type id = type_hash<Type>::value())
inline

Returns a sink object for the given element.

Use this function to receive notifications whenever an instance of the given element is explicitly updated.
The function type for a listener is equivalent to:

Listeners are invoked after updating the element.

See also
sink
Template Parameters
TypeType of element of which to get the sink.
Parameters
idOptional name used to map the storage within the registry.
Returns
A temporary sink object.

Definition at line 1026 of file registry.hpp.

◆ operator=() [1/2]

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

Move assignment operator.

Parameters
otherThe instance to move from.
Returns
This registry.

Definition at line 379 of file registry.hpp.

◆ operator=() [2/2]

template<typename Entity , typename Allocator >
basic_registry & entt::basic_registry< Entity, Allocator >::operator= ( const basic_registry< Entity, Allocator > & )
delete

Default copy assignment operator, deleted on purpose.

Returns
This mixin.

◆ orphan()

template<typename Entity , typename Allocator >
bool entt::basic_registry< Entity, Allocator >::orphan ( const entity_type entt) const
inline

Checks if an entity has elements assigned.

Parameters
enttA valid identifier.
Returns
True if the entity has no elements assigned, false otherwise.

Definition at line 978 of file registry.hpp.

◆ owned()

template<typename Entity , typename Allocator >
template<typename... Type>
bool entt::basic_registry< Entity, Allocator >::owned ( ) const
inline

Checks whether the given elements belong to any group.

Template Parameters
TypeTypes of elements in which one is interested.
Returns
True if the pools of the given elements are free, false otherwise.

Definition at line 1127 of file registry.hpp.

◆ patch()

template<typename Entity , typename Allocator >
template<typename Type , typename... Func>
decltype(auto) entt::basic_registry< Entity, Allocator >::patch ( const entity_type entt,
Func &&... func )
inline

Patches the given element for an entity.

The signature of the function should be equivalent to the following:

void(Type &);
Warning
Attempting to patch an element of an entity that doesn't own it results in undefined behavior.
Template Parameters
TypeType of element to patch.
FuncTypes of the function objects to invoke.
Parameters
enttA valid identifier.
funcValid function objects.
Returns
A reference to the patched element.

Definition at line 683 of file registry.hpp.

◆ remove() [1/2]

template<typename Entity , typename Allocator >
template<typename Type , typename... Other>
size_type entt::basic_registry< Entity, Allocator >::remove ( const entity_type entt)
inline

Removes the given elements from an entity.

Template Parameters
TypeType of element to remove.
OtherOther types of elements to remove.
Parameters
enttA valid identifier.
Returns
The number of elements actually removed.

Definition at line 715 of file registry.hpp.

◆ remove() [2/2]

template<typename Entity , typename Allocator >
template<typename Type , typename... Other, typename It >
size_type entt::basic_registry< Entity, Allocator >::remove ( It first,
It last )
inline

Removes the given elements from all the entities in a range.

See also
remove
Template Parameters
TypeType of element to remove.
OtherOther types of elements to remove.
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 elements actually removed.

Definition at line 732 of file registry.hpp.

◆ replace()

template<typename Entity , typename Allocator >
template<typename Type , typename... Args>
decltype(auto) entt::basic_registry< Entity, Allocator >::replace ( const entity_type entt,
Args &&... args )
inline

Replaces the given element for an entity.

The element must have a proper constructor or be of aggregate type.

Warning
Attempting to replace an element of an entity that doesn't own it results in undefined behavior.
Template Parameters
TypeType of element to replace.
ArgsTypes of arguments to use to construct the element.
Parameters
enttA valid identifier.
argsParameters to use to initialize the element.
Returns
A reference to the element being replaced.

Definition at line 703 of file registry.hpp.

◆ reset()

template<typename Entity , typename Allocator >
bool entt::basic_registry< Entity, Allocator >::reset ( const id_type id)
inline

Discards the storage associated with a given name, if any.

Parameters
idName used to map the storage within the registry.
Returns
True in case of success, false otherwise.

Definition at line 471 of file registry.hpp.

◆ sort() [1/2]

template<typename Entity , typename Allocator >
template<typename To , typename From >
void entt::basic_registry< Entity, Allocator >::sort ( )
inline

Sorts two pools of elements in the same way.

Entities and elements in To which are part of both storage are sorted internally with the order they have in From. The others follow in no particular order.

Warning
Pools of elements owned by a group cannot be sorted.
Template Parameters
ToType of elements to sort.
FromType of elements to use to sort.

Definition at line 1191 of file registry.hpp.

◆ sort() [2/2]

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

Sorts the elements of a given element.

The comparison function object returns true if the first element is less than the second one, false otherwise. Its signature is also equivalent to one of the following:

bool(const Entity, const Entity);
bool(const Type &, const Type &);

Moreover, it shall induce a strict weak ordering on the values.
The sort function object offers an operator() that accepts:

  • 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 object to use to compare the elements.

The comparison function object hasn't necessarily the type of the one passed along with the other parameters to this member function.

Warning
Pools of elements owned by a group cannot be sorted.
Template Parameters
TypeType of elements to sort.
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 1165 of file registry.hpp.

◆ storage() [1/6]

template<typename Entity , typename Allocator >
const_iterable entt::basic_registry< Entity, Allocator >::storage ( ) const
inlinenoexcept

Returns an iterable object to use to visit a registry.

The iterable object returns a pair that contains the name and a reference to the current storage.

Returns
An iterable object to use to visit the registry.

Definition at line 421 of file registry.hpp.

◆ storage() [2/6]

template<typename Entity , typename Allocator >
iterable entt::basic_registry< Entity, Allocator >::storage ( )
inlinenoexcept

Returns an iterable object to use to visit a registry.

The iterable object returns a pair that contains the name and a reference to the current storage.

Returns
An iterable object to use to visit the registry.

Definition at line 416 of file registry.hpp.

◆ storage() [3/6]

template<typename Entity , typename Allocator >
common_type * entt::basic_registry< Entity, Allocator >::storage ( const id_type id)
inline

Finds the storage associated with a given name, if any.

Parameters
idName used to map the storage within the registry.
Returns
A pointer to the storage if it exists, a null pointer otherwise.

Definition at line 430 of file registry.hpp.

◆ storage() [4/6]

template<typename Entity , typename Allocator >
const common_type * entt::basic_registry< Entity, Allocator >::storage ( const id_type id) const
inline

Finds the storage associated with a given name, if any.

Parameters
idName used to map the storage within the registry.
Returns
A pointer to the storage if it exists, a null pointer otherwise.

Definition at line 439 of file registry.hpp.

◆ storage() [5/6]

template<typename Entity , typename Allocator >
template<typename Type >
storage_for_type< Type > & entt::basic_registry< Entity, Allocator >::storage ( const id_type id = type_hash<Type>::value())
inline

Returns the storage for a given element type.

Template Parameters
TypeType of element of which to return the storage.
Parameters
idOptional name used to map the storage within the registry.
Returns
The storage for the given element type.

Definition at line 451 of file registry.hpp.

◆ storage() [6/6]

template<typename Entity , typename Allocator >
template<typename Type >
const storage_for_type< Type > * entt::basic_registry< Entity, Allocator >::storage ( const id_type id = type_hash<Type>::value()) const
inline

Returns the storage for a given element type, if any.

Template Parameters
TypeType of element of which to return the storage.
Parameters
idOptional name used to map the storage within the registry.
Returns
The storage for the given element type.

Definition at line 462 of file registry.hpp.

◆ swap()

template<typename Entity , typename Allocator >
void entt::basic_registry< Entity, Allocator >::swap ( basic_registry< Entity, Allocator > & other)
inlinenoexcept

Exchanges the contents with those of a given registry.

Parameters
otherRegistry to exchange the content with.

Definition at line 388 of file registry.hpp.

◆ try_get() [1/2]

template<typename Entity , typename Allocator >
template<typename... Type>
auto entt::basic_registry< Entity, Allocator >::try_get ( const entity_type entt)
inline

Returns pointers to the given elements for an entity.

Note
The registry retains ownership of the pointed-to elements.
Template Parameters
TypeTypes of elements to get.
Parameters
enttA valid identifier.
Returns
Pointers to the elements owned by the entity.

Definition at line 947 of file registry.hpp.

◆ try_get() [2/2]

template<typename Entity , typename Allocator >
template<typename... Type>
auto entt::basic_registry< Entity, Allocator >::try_get ( const entity_type entt) const
inline

Returns pointers to the given elements for an entity.

Note
The registry retains ownership of the pointed-to elements.
Template Parameters
TypeTypes of elements to get.
Parameters
enttA valid identifier.
Returns
Pointers to the elements owned by the entity.

Definition at line 936 of file registry.hpp.

◆ valid()

template<typename Entity , typename Allocator >
bool entt::basic_registry< Entity, Allocator >::valid ( const entity_type entt) const
inline

Checks if an identifier refers to a valid entity.

Parameters
enttAn identifier, either valid or not.
Returns
True if the identifier is valid, false otherwise.

Definition at line 481 of file registry.hpp.

◆ view() [1/2]

template<typename Entity , typename Allocator >
template<typename Type , typename... Other, typename... Exclude>
basic_view< get_t< storage_for_type< Type >, storage_for_type< Other >... >, exclude_t< storage_for_type< Exclude >... > > entt::basic_registry< Entity, Allocator >::view ( exclude_t< Exclude... > = exclude_t{})
inline

Returns a view for the given elements.

Template Parameters
TypeType of element used to construct the view.
OtherOther types of elements used to construct the view.
ExcludeTypes of elements used to filter the view.
Returns
A newly created view.

Definition at line 1072 of file registry.hpp.

◆ view() [2/2]

template<typename Entity , typename Allocator >
template<typename Type , typename... Other, typename... Exclude>
basic_view< get_t< storage_for_type< const Type >, storage_for_type< const Other >... >, exclude_t< storage_for_type< const Exclude >... > > entt::basic_registry< Entity, Allocator >::view ( exclude_t< Exclude... > = exclude_t{}) const
inline

Returns a view for the given elements.

Template Parameters
TypeType of element used to construct the view.
OtherOther types of elements used to construct the view.
ExcludeTypes of elements used to filter the view.
Returns
A newly created view.

Definition at line 1063 of file registry.hpp.


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