Fx2D
A C++20 2D rigid-body physics engine
Loading...
Searching...
No Matches
FxNamedRegistry< T > Class Template Reference

#include <Registry.h>

Public Member Functions

 FxNamedRegistry ()=default
 
 FxNamedRegistry (size_t max_size)
 
void reserve (size_t n)
 
size_t size () const noexcept
 
bool empty () const noexcept
 
void set_max_size (size_t n)
 
virtual bool add (const std::shared_ptr< T > &item)
 
virtual bool remove (const std::string &name)
 
std::shared_ptr< T > get (const std::string &name) const
 
T * get_rawptr (const std::string &name) const noexcept
 
std::string make_unique_name (const std::string &base) const
 
const std::vector< std::shared_ptr< T > > & items () const noexcept
 
std::vector< std::shared_ptr< T > > & items () noexcept
 
void clear ()
 
void shrink_to_fit ()
 
template<typename ExecPolicy , typename Func >
void for_each (ExecPolicy &&policy, Func &&func)
 
template<typename ExecPolicy , typename Func >
void transform (ExecPolicy &&policy, Func &&func, std::vector< std::invoke_result_t< Func, std::shared_ptr< T > > > &results)
 

Protected Member Functions

bool _add (const std::shared_ptr< T > &item)
 
bool _remove (const std::string &name)
 

Protected Attributes

std::vector< std::shared_ptr< T > > m_items_vec
 
std::unordered_map< std::string, size_t > m_name_map
 
size_t m_size_limit = std::numeric_limits<size_t>::max()
 
size_t m_max_size = std::numeric_limits<size_t>::max()
 

Detailed Description

template<typename T>
class FxNamedRegistry< T >

Definition at line 18 of file Registry.h.

Constructor & Destructor Documentation

◆ FxNamedRegistry() [1/2]

template<typename T >
FxNamedRegistry< T >::FxNamedRegistry ( )
default

◆ FxNamedRegistry() [2/2]

template<typename T >
FxNamedRegistry< T >::FxNamedRegistry ( size_t  max_size)
inlineexplicit

Definition at line 73 of file Registry.h.

Member Function Documentation

◆ _add()

template<typename T >
bool FxNamedRegistry< T >::_add ( const std::shared_ptr< T > &  item)
inlineprotected

Definition at line 26 of file Registry.h.

◆ _remove()

template<typename T >
bool FxNamedRegistry< T >::_remove ( const std::string &  name)
inlineprotected

Definition at line 49 of file Registry.h.

◆ add()

template<typename T >
virtual bool FxNamedRegistry< T >::add ( const std::shared_ptr< T > &  item)
inlinevirtual

Reimplemented in FxEntityRegistry.

Definition at line 94 of file Registry.h.

◆ clear()

template<typename T >
void FxNamedRegistry< T >::clear ( )
inline

Definition at line 125 of file Registry.h.

◆ empty()

template<typename T >
bool FxNamedRegistry< T >::empty ( ) const
inlinenoexcept

Definition at line 84 of file Registry.h.

◆ for_each()

template<typename T >
template<typename ExecPolicy , typename Func >
void FxNamedRegistry< T >::for_each ( ExecPolicy &&  policy,
Func &&  func 
)
inline

Definition at line 183 of file Registry.h.

◆ get()

template<typename T >
std::shared_ptr< T > FxNamedRegistry< T >::get ( const std::string &  name) const
inline

Definition at line 97 of file Registry.h.

◆ get_rawptr()

template<typename T >
T * FxNamedRegistry< T >::get_rawptr ( const std::string &  name) const
inlinenoexcept

Definition at line 107 of file Registry.h.

◆ items() [1/2]

template<typename T >
const std::vector< std::shared_ptr< T > > & FxNamedRegistry< T >::items ( ) const
inlinenoexcept

Definition at line 122 of file Registry.h.

◆ items() [2/2]

template<typename T >
std::vector< std::shared_ptr< T > > & FxNamedRegistry< T >::items ( )
inlinenoexcept

Definition at line 123 of file Registry.h.

◆ make_unique_name()

template<typename T >
std::string FxNamedRegistry< T >::make_unique_name ( const std::string &  base) const
inline

Definition at line 114 of file Registry.h.

◆ remove()

template<typename T >
virtual bool FxNamedRegistry< T >::remove ( const std::string &  name)
inlinevirtual

Reimplemented in FxEntityRegistry.

Definition at line 95 of file Registry.h.

◆ reserve()

template<typename T >
void FxNamedRegistry< T >::reserve ( size_t  n)
inline

Definition at line 75 of file Registry.h.

◆ set_max_size()

template<typename T >
void FxNamedRegistry< T >::set_max_size ( size_t  n)
inline

Definition at line 85 of file Registry.h.

◆ shrink_to_fit()

template<typename T >
void FxNamedRegistry< T >::shrink_to_fit ( )
inline

Definition at line 131 of file Registry.h.

◆ size()

template<typename T >
size_t FxNamedRegistry< T >::size ( ) const
inlinenoexcept

Definition at line 83 of file Registry.h.

◆ transform()

template<typename T >
template<typename ExecPolicy , typename Func >
void FxNamedRegistry< T >::transform ( ExecPolicy &&  policy,
Func &&  func,
std::vector< std::invoke_result_t< Func, std::shared_ptr< T > > > &  results 
)
inline

Definition at line 199 of file Registry.h.

Member Data Documentation

◆ m_items_vec

template<typename T >
std::vector<std::shared_ptr<T> > FxNamedRegistry< T >::m_items_vec
protected

Definition at line 20 of file Registry.h.

◆ m_max_size

template<typename T >
size_t FxNamedRegistry< T >::m_max_size = std::numeric_limits<size_t>::max()
protected

Definition at line 24 of file Registry.h.

◆ m_name_map

template<typename T >
std::unordered_map<std::string, size_t> FxNamedRegistry< T >::m_name_map
protected

Definition at line 21 of file Registry.h.

◆ m_size_limit

template<typename T >
size_t FxNamedRegistry< T >::m_size_limit = std::numeric_limits<size_t>::max()
protected

Definition at line 22 of file Registry.h.


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