Flecs: flecs::_::enum_reflection< E, Handler > Struct Template Reference
Description: A fast entity component system (ECS) for C & C++

| Flecs v4.0 A fast entity component system (ECS) for C & C++

Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
flecs::_::enum_reflection< E, Handler > Struct Template Reference

Provides utilities for enum reflection. More...

`#include <enum.hpp>`

## Public Types
using | U = underlying_type_t<E>

## Static Public Member Functions
template<U Low, U High, typename... Args>
static constexpr U | each_enum_range (U last_value, Args... args)
| Iterates over the range [Low, High] of enum values between Low and High.
template<U Low, U High, typename... Args>
static constexpr U | each_mask_range (U last_value, Args... args)
| Iterates over the mask range (Low, High] of enum values between Low and High.
template<U Value = static_cast<U>( _::to_constant<E, 126>::value ), typename... Args>
static constexpr U | each_enum (Args... args)
| Handles enum iteration for gathering reflection data.

## Static Public Attributes
static const U | high_bit = static_cast<U>(1) << (sizeof(U) * 8 - 1)

## Detailed Description

template<typename E, typename Handler>
struct flecs::_::enum_reflection< E, Handler >

Provides utilities for enum reflection.

This struct provides static functions for enum reflection, including conversion between enum values and their underlying integral types, and iteration over enum values.

Template Parameters

  E | The enum type.
  Handler | The handler for enum reflection operations.

Definition at line 193 of file enum.hpp.

## Member Typedef Documentation

## ◆ U

template<typename E, typename Handler>

using flecs::_::enum_reflection< E, Handler >::U = underlying_type_t<E>

Definition at line 194 of file enum.hpp.

## Member Function Documentation

## ◆ each_enum()

template<typename E, typename Handler>
template<U Value = static_cast<U>( _::to_constant<E, 126>::value ), typename... Args>

static constexpr U flecs::_::enum_reflection< E, Handler >::each_enum | ( | Args... | args | ) |
| inlinestaticconstexpr

Handles enum iteration for gathering reflection data.

Iterates over all enum values up to a specified maximum value (each_enum_range<0, Value>), then iterates the rest of the possible bitmasks (each_mask_range<Value, high_bit>).

Template Parameters

  Value | The maximum enum value to iterate up to.
  Args | Additional arguments to be passed through to Handler::handle_constant

Parameters

  args | Additional arguments to be passed through to Handler::handle_constant

Returns
  constexpr U The result of the iteration.

Definition at line 260 of file enum.hpp.

## ◆ each_enum_range()

template<typename E, typename Handler>
template<U Low, U High, typename... Args>

static constexpr U flecs::_::enum_reflection< E, Handler >::each_enum_range | ( | U | last_value,
|  | Args... | args )
| inlinestaticconstexpr

Iterates over the range [Low, High] of enum values between Low and High.

Recursively divide and conquers the search space to reduce the template-depth. Once recursive division is complete, calls Handle<E>::handle_constant in ascending order, passing the values computed up the chain.

Template Parameters

  Low | The lower bound of the search range, inclusive.
  High | The upper bound of the search range, inclusive.
  Args | Additional arguments to be passed through to Handler::handle_constant

Parameters

  last_value | The last value processed in the iteration.
  args | Additional arguments to be passed through to Handler::handle_constant

Returns
  constexpr U The result of the iteration.

Definition at line 211 of file enum.hpp.

## ◆ each_mask_range()

template<typename E, typename Handler>
template<U Low, U High, typename... Args>

static constexpr U flecs::_::enum_reflection< E, Handler >::each_mask_range | ( | U | last_value,
|  | Args... | args )
| inlinestaticconstexpr

Iterates over the mask range (Low, High] of enum values between Low and High.

Recursively iterates the search space, looking for enums defined as multiple-of-2 bitmasks. Each iteration, shifts bit to the right until it hits Low, then calls Handler::handle_constant for each bitmask in ascending order.

Template Parameters

  Low | The lower bound of the search range, not inclusive
  High | The upper bound of the search range, inclusive.
  Args | Additional arguments to be passed through to Handler::handle_constant

Parameters

  last_value | The last value processed in the iteration.
  args | Additional arguments to be passed through to Handler::handle_constant

Returns
  constexpr U The result of the iteration.

Definition at line 237 of file enum.hpp.

## Member Data Documentation

## ◆ high_bit

template<typename E, typename Handler>

const U flecs::_::enum_reflection< E, Handler >::high_bit = static_cast<U>(1) << (sizeof(U) * 8 - 1)
| static

Definition at line 264 of file enum.hpp.

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

- include/flecs/addons/cpp/utils/enum.hpp