walberla::uid::BitGenerator< T, UINT > Class Template Reference

Detailed Description

template<typename T, typename UINT>
class walberla::uid::BitGenerator< T, UINT >

Generates UIDs (unique IDs) per class T starting from 1.

This generator uses a bitwise increment (0001 -> 0010 -> 0100 -> 1000).

In debug mode, generating more UIDs than there are bits available for an unsigned int of type "uint_type" will trigger an assertion and fail.

#include <UIDGenerators.h>

Public Types

using uint_type = UINT
 
using generator_type = bit_generated_tag
 

Public Member Functions

 WALBERLA_STATIC_ASSERT (std::numeric_limits< UINT >::is_specialized &&std::numeric_limits< UINT >::is_integer &&!std::numeric_limits< UINT >::is_signed)
 

Static Public Member Functions

static uint_type generateUID ()
 
static uint_type firstUID ()
 
static uint_type nextUID (const uint_type uid)
 
static uint_type toIndex (const uint_type uid)
 
static uint_type toBitMask (const uint_type uid)
 
static const char * getType ()
 

Member Typedef Documentation

◆ generator_type

template<typename T , typename UINT >
using walberla::uid::BitGenerator< T, UINT >::generator_type = bit_generated_tag

◆ uint_type

template<typename T , typename UINT >
using walberla::uid::BitGenerator< T, UINT >::uint_type = UINT

Member Function Documentation

◆ firstUID()

template<typename T , typename UINT >
static uint_type walberla::uid::BitGenerator< T, UINT >::firstUID ( )
inlinestatic

◆ generateUID()

template<typename T , typename UINT >
static uint_type walberla::uid::BitGenerator< T, UINT >::generateUID ( )
inlinestatic

◆ getType()

template<typename T , typename UINT >
static const char* walberla::uid::BitGenerator< T, UINT >::getType ( )
inlinestatic

◆ nextUID()

template<typename T , typename UINT >
static uint_type walberla::uid::BitGenerator< T, UINT >::nextUID ( const uint_type  uid)
inlinestatic

◆ toBitMask()

template<typename T , typename UINT >
static uint_type walberla::uid::BitGenerator< T, UINT >::toBitMask ( const uint_type  uid)
inlinestatic

◆ toIndex()

template<typename T , typename UINT >
static uint_type walberla::uid::BitGenerator< T, UINT >::toIndex ( const uint_type  uid)
inlinestatic

◆ WALBERLA_STATIC_ASSERT()

template<typename T , typename UINT >
walberla::uid::BitGenerator< T, UINT >::WALBERLA_STATIC_ASSERT ( std::numeric_limits< UINT >::is_specialized &&std::numeric_limits< UINT >::is_integer &&!std::numeric_limits< UINT >::is_signed  )

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