MAGE  v0.171.0
Matthias Advanced Game Engine
mage::IdGenerator< T, typename > Class Template Reference

#include <id_generator.hpp>

Public Member Functions

constexpr IdGenerator (T first_id=T(0)) noexcept
 
 IdGenerator (const IdGenerator &generator)=delete
 
 IdGenerator (IdGenerator &&generator)=delete
 
 ~IdGenerator ()=default
 
IdGeneratoroperator= (const IdGenerator &generator)=delete
 
IdGeneratoroperator= (IdGenerator &&generator)=delete
 
GetNextId () noexcept
 

Private Attributes

std::atomic< T > m_current_id
 

Detailed Description

template<typename T, typename = std::enable_if_t< std::is_integral_v< T > >>
class mage::IdGenerator< T, typename >

A class of id generators.

Constructor & Destructor Documentation

◆ IdGenerator() [1/3]

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
constexpr mage::IdGenerator< T, typename >::IdGenerator ( first_id = T(0))
explicitnoexcept

Constructs an id generator.

Parameters
[in]first_idThe first id of this id_generator

◆ IdGenerator() [2/3]

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
mage::IdGenerator< T, typename >::IdGenerator ( const IdGenerator< T, typename > &  generator)
delete

Constructs an id generator from the given id generator.

Parameters
[in]generatorA reference to the id generator to copy.

◆ IdGenerator() [3/3]

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
mage::IdGenerator< T, typename >::IdGenerator ( IdGenerator< T, typename > &&  generator)
delete

Constructs an id generator by moving the given id generator.

Parameters
[in]generatorA reference to the id generator to move.

◆ ~IdGenerator()

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
mage::IdGenerator< T, typename >::~IdGenerator ( )
default

Destructs this id generator.

Member Function Documentation

◆ GetNextId()

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
T mage::IdGenerator< T, typename >::GetNextId ( )
noexcept

Returns the next id of this id generator.

Returns
The next id of this id generator.

◆ operator=() [1/2]

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
IdGenerator& mage::IdGenerator< T, typename >::operator= ( const IdGenerator< T, typename > &  generator)
delete

Copies the given id generator to this id generator.

Parameters
[in]generatorThe id generator to copy.
Returns
A reference to the copy of the given id generator (i.e. this id generator).

◆ operator=() [2/2]

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
IdGenerator& mage::IdGenerator< T, typename >::operator= ( IdGenerator< T, typename > &&  generator)
delete

Copies the given id generator to this id generator.

Parameters
[in]generatorThe id generator to move.
Returns
A reference to the moved id generator (i.e. this id generator).

Member Data Documentation

◆ m_current_id

template<typename T , typename = std::enable_if_t< std::is_integral_v< T > >>
std::atomic< T > mage::IdGenerator< T, typename >::m_current_id
private

The current id of this id generator.