Loading...
Searching...
No Matches
ml::GatherFlags< ComponentManifest, Traits > Struct Template Reference

Collects all Flag enums from a component manifest and its traits. More...

#include <MultiCustomFlaggable.h>

Public Types

using AllFlagsTuple
using type = typename TupleToMultiFlaggable<AllFlagsTuple>::type

Detailed Description

template<typename ComponentManifest, typename... Traits>
struct ml::GatherFlags< ComponentManifest, Traits >

Collects all Flag enums from a component manifest and its traits.

GatherFlags<ComponentManifest, Traits...>::type resolves to a MultiCustomFlaggable instantiation whose template parameters are exactly the non-void Flag enums found in:

  • ComponentManifest::Flag (if it exists)
  • TraitManifest::Flag for each Trait that has a manifest_type

ComponentCore inherits this type to get a single, unified flag store for the entire component hierarchy. void entries are filtered out automatically, so manifests or traits without flags add no overhead.

Template Parameters
ComponentManifestThe component's own manifest, or void.
TraitsThe extra traits mixed into the component.
See also
MultiCustomFlaggable, ComponentCore, GatherStates

Definition at line 216 of file MultiCustomFlaggable.h.

Member Typedef Documentation

◆ AllFlagsTuple

template<typename ComponentManifest, typename... Traits>
using ml::GatherFlags< ComponentManifest, Traits >::AllFlagsTuple
Initial value:
typename FilterVoid<
typename extract_ManifestFlags<ComponentManifest>::type,
typename extract_ManifestFlags<
typename extract_TraitManifest<Traits>::type
>::type...
typename TupleToMultiFlaggable< AllFlagsTuple >::type type

Definition at line 218 of file MultiCustomFlaggable.h.

◆ type

template<typename ComponentManifest, typename... Traits>
using ml::GatherFlags< ComponentManifest, Traits >::type = typename TupleToMultiFlaggable<AllFlagsTuple>::type

Definition at line 225 of file MultiCustomFlaggable.h.


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