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> >;

(from test_debug.cpp).

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

Last updated