HFSM2
Search
K
Comment on page

Type Configuration

The types used by HFSM2 can be configured using parameterized hfsm2::MachineT<hfsm2::Config> structure in place of default-configured hfsm2::Machine, e.g.:
using M = hfsm2::MachineT< hfsm2::Config ::ContextT<Empty> ::RandomT<hfsm2::XoShiRo128Plus> >;
Once hfsm2::Config is fully declared, it needs to be passed as a template argument into hfsm2::MachineT<> to define configured HFSM2 parent struct containing all derivative types used in client code.

hfsm2::Config customization points:

Feature Define
Type
Used In
Default
ContextT<T>
Context& Control::context()
(see Context)
EmptyContext
HFSM2_ENABLE_UTILITY_THEORY
RankT<T>
Rank State::rank()
int8_t
HFSM2_ENABLE_UTILITY_THEORY
UtilityT<T>
Utility State::utility()
float
HFSM2_ENABLE_UTILITY_THEORY
RandomT<T>
Used internally by randomize() transition and Random region
RandomT<float>
SubstitutionLimitN<N>
Maximum number of times State::entryGuard()methods are allowed to substitute the transition into their class for a transition into another one during the single *Root::update()
4
HFSM2_ENABLE_PLANS
TaskCapacityN<N>
Total number of tasks across all plans in an FSM
2x Number of Sub-States of All Composite Regions