tin  1.5.9
tsm::core::transition_sequence< Capacity > Struct Template Reference

#include <core_algorithms.h>

Collaboration diagram for tsm::core::transition_sequence< Capacity >:
Collaboration graph

Public Attributes

std::uint16_t destination { npos }
 
std::uint16_t lca { npos }
 
static_path< Capacity > exits {}
 
static_path< Capacity > entries {}
 
static_path< Capacity > final_path {}
 

Detailed Description

template<std::size_t Capacity>
struct tsm::core::transition_sequence< Capacity >

Transition execution sequence.

This is the complete state-path data needed to execute the HSM transition semantics: which states are exited, which transition action runs, which states are entered, and what the final active path becomes.

Runtime code can execute this data without recomputing hierarchy relations or consulting names.

(define-type TransitionSequence (record (destination StateId) (lca StateId) (exits (Path N)) (entries (Path N)) (final-path (Path N))))

(define (transition config source event hierarchy) (let* ((selected-transition (select-transition config source event)) (dst selected-transition.dst) (lca (least-common-ancestor source dst hierarchy)) (exit-list (states-from-leaf-up-to source lca hierarchy)) (entry-list (states-from-lca-down-to lca dst hierarchy))) (run-exit exit-list) (run-action selected-transition) (set-active-path (append (path-from-root lca hierarchy) entry-list (enter-initial-children dst hierarchy)))))

Member Data Documentation

◆ destination

template<std::size_t Capacity>
std::uint16_t tsm::core::transition_sequence< Capacity >::destination { npos }

◆ entries

template<std::size_t Capacity>
static_path<Capacity> tsm::core::transition_sequence< Capacity >::entries {}

◆ exits

template<std::size_t Capacity>
static_path<Capacity> tsm::core::transition_sequence< Capacity >::exits {}

◆ final_path

template<std::size_t Capacity>
static_path<Capacity> tsm::core::transition_sequence< Capacity >::final_path {}

◆ lca

template<std::size_t Capacity>
std::uint16_t tsm::core::transition_sequence< Capacity >::lca { npos }

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