OpenTTD Source: PoolID< TBaseType, TTag, TEnd, TInvalid > Struct Template Reference

OpenTTD Source 15.3

Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
PoolID< TBaseType, TTag, TEnd, TInvalid > Struct Template Reference

Templated helper to make a PoolID a single POD value. More...

`#include <pool_type.hpp>`

Inheritance diagram for PoolID< TBaseType, TTag, TEnd, TInvalid >:

## Public Types
using | BaseType = TBaseType

## Public Member Functions
constexpr | PoolID (const PoolID &)=default
constexpr | PoolID (PoolID &&)=default
constexpr | PoolID (const TBaseType &value)
constexpr PoolID & | operator= (const PoolID &rhs)
constexpr PoolID & | operator= (PoolID &&rhs)
constexpr TBaseType | base () const noexcept
constexpr auto | operator++ ()
constexpr auto | operator+ (const std::integral auto &val) const
constexpr auto | operator- (const std::integral auto &val) const
constexpr auto | operator% (const std::integral auto &val) const
constexpr bool | operator== (const PoolID< TBaseType, TTag, TEnd, TInvalid > &rhs) const
constexpr auto | operator<=> (const PoolID< TBaseType, TTag, TEnd, TInvalid > &rhs) const
constexpr bool | operator== (const size_t &rhs) const
constexpr auto | operator<=> (const size_t &rhs) const

## Static Public Member Functions
static constexpr PoolID | Begin ()
static constexpr PoolID | End ()
static constexpr PoolID | Invalid ()

## Private Attributes
TBaseType | value

## Detailed Description

template<typename TBaseType, typename TTag, TBaseType TEnd, TBaseType TInvalid>
struct PoolID< TBaseType, TTag, TEnd, TInvalid >

Templated helper to make a PoolID a single POD value.

Example usage:

using MyType = PoolID<int, struct MyTypeTag, 16, 0xFF>;

Template Parameters

  TBaseType | Type of the derived class (i.e. the concrete usage of this class).
  TTag | An unique struct to keep types of the same TBaseType distinct.
  TEnd | The PoolID at the end of the pool (equivalent to size).
  TInvalid | The PoolID denoting an invalid value.

Definition at line 43 of file pool_type.hpp.

## Member Typedef Documentation

## ◆ BaseType

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

using PoolID< TBaseType, TTag, TEnd, TInvalid >::BaseType = TBaseType

Definition at line 44 of file pool_type.hpp.

## Constructor & Destructor Documentation

## ◆ PoolID()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr PoolID< TBaseType, TTag, TEnd, TInvalid >::PoolID | ( | const TBaseType & | value | ) |
| inlineexplicitconstexpr

Definition at line 50 of file pool_type.hpp.

## Member Function Documentation

## ◆ base()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr TBaseType PoolID< TBaseType, TTag, TEnd, TInvalid >::base | ( |  | ) | const
| inlineconstexprnoexcept

Definition at line 56 of file pool_type.hpp.

## ◆ Begin()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

static constexpr PoolID PoolID< TBaseType, TTag, TEnd, TInvalid >::Begin | ( |  | ) |
| inlinestaticconstexpr

Definition at line 58 of file pool_type.hpp.

## ◆ End()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

static constexpr PoolID PoolID< TBaseType, TTag, TEnd, TInvalid >::End | ( |  | ) |
| inlinestaticconstexpr

Definition at line 59 of file pool_type.hpp.

## ◆ Invalid()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

static constexpr PoolID PoolID< TBaseType, TTag, TEnd, TInvalid >::Invalid | ( |  | ) |
| inlinestaticconstexpr

Definition at line 60 of file pool_type.hpp.

## ◆ operator%()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr auto PoolID< TBaseType, TTag, TEnd, TInvalid >::operator% | ( | const std::integral auto & | val | ) | const
| inlineconstexpr

Definition at line 65 of file pool_type.hpp.

## ◆ operator+()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr auto PoolID< TBaseType, TTag, TEnd, TInvalid >::operator+ | ( | const std::integral auto & | val | ) | const
| inlineconstexpr

Definition at line 63 of file pool_type.hpp.

## ◆ operator++()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr auto PoolID< TBaseType, TTag, TEnd, TInvalid >::operator++ | ( |  | ) |
| inlineconstexpr

Definition at line 62 of file pool_type.hpp.

## ◆ operator-()

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr auto PoolID< TBaseType, TTag, TEnd, TInvalid >::operator- | ( | const std::integral auto & | val | ) | const
| inlineconstexpr

Definition at line 64 of file pool_type.hpp.

## ◆ operator<=>() [1/2]

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr auto PoolID< TBaseType, TTag, TEnd, TInvalid >::operator<=> | ( | const PoolID< TBaseType, TTag, TEnd, TInvalid > & | rhs | ) | const
| inlineconstexpr

Definition at line 68 of file pool_type.hpp.

## ◆ operator<=>() [2/2]

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr auto PoolID< TBaseType, TTag, TEnd, TInvalid >::operator<=> | ( | const size_t & | rhs | ) | const
| inlineconstexpr

Definition at line 71 of file pool_type.hpp.

## ◆ operator=() [1/2]

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr PoolID & PoolID< TBaseType, TTag, TEnd, TInvalid >::operator= | ( | const PoolID< TBaseType, TTag, TEnd, TInvalid > & | rhs | ) |
| inlineconstexpr

Definition at line 52 of file pool_type.hpp.

## ◆ operator=() [2/2]

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr PoolID & PoolID< TBaseType, TTag, TEnd, TInvalid >::operator= | ( | PoolID< TBaseType, TTag, TEnd, TInvalid > && | rhs | ) |
| inlineconstexpr

Definition at line 53 of file pool_type.hpp.

## ◆ operator==() [1/2]

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr bool PoolID< TBaseType, TTag, TEnd, TInvalid >::operator== | ( | const PoolID< TBaseType, TTag, TEnd, TInvalid > & | rhs | ) | const
| inlineconstexpr

Definition at line 67 of file pool_type.hpp.

## ◆ operator==() [2/2]

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

constexpr bool PoolID< TBaseType, TTag, TEnd, TInvalid >::operator== | ( | const size_t & | rhs | ) | const
| inlineconstexpr

Definition at line 70 of file pool_type.hpp.

## Field Documentation

## ◆ value

template<typename TBaseType , typename TTag , TBaseType TEnd, TBaseType TInvalid>

TBaseType PoolID< TBaseType, TTag, TEnd, TInvalid >::value
| private

Definition at line 74 of file pool_type.hpp.

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

- src/core/pool_type.hpp