Pyrogenesis  trunk
Public Member Functions | Private Member Functions | Private Attributes | List of all members
CFsm Class Reference

Manages states, events, actions and transitions between states. More...

#include <fsm.h>

Inheritance diagram for CFsm:
Inheritance graph
[legend]

Public Member Functions

 CFsm (void)
 
virtual ~CFsm (void)
 
virtual void Setup (void)
 Constructs the state machine. More...
 
void Shutdown (void)
 Clear event, action and condition lists and reset state machine. More...
 
void AddState (unsigned int state)
 
CFsmEventAddEvent (unsigned int eventType)
 
CFsmTransitionAddTransition (unsigned int state, unsigned int eventType, unsigned int nextState)
 
CFsmTransitionAddTransition (unsigned int state, unsigned int eventType, unsigned int nextState, void *pAction, void *pContext)
 
CFsmTransitionGetTransition (unsigned int state, unsigned int eventType) const
 
CFsmTransitionGetEventTransition (unsigned int eventType) const
 
void SetFirstState (unsigned int firstState)
 
void SetCurrState (unsigned int state)
 
unsigned int GetCurrState (void) const
 
void SetNextState (unsigned int nextState)
 
unsigned int GetNextState (void) const
 
const StateSetGetStates (void) const
 
const EventMapGetEvents (void) const
 
const TransitionListGetTransitions (void) const
 
bool Update (unsigned int eventType, void *pEventData)
 
bool IsValidState (unsigned int state) const
 
bool IsValidEvent (unsigned int eventType) const
 
virtual bool IsDone (void) const
 

Private Member Functions

 NONCOPYABLE (CFsm)
 
bool IsFirstTime (void) const
 

Private Attributes

bool m_Done
 
unsigned int m_FirstState
 
unsigned int m_CurrState
 
unsigned int m_NextState
 
StateSet m_States
 
EventMap m_Events
 
TransitionList m_Transitions
 

Detailed Description

Manages states, events, actions and transitions between states.

It provides an interface for advertising events and track the current state. The implementation is a Mealy state machine, so the system respond to events and execute some action.

A Mealy state machine has behaviour associated with state transitions; Mealy machines are event driven where an event triggers a state transition

Constructor & Destructor Documentation

CFsm::CFsm ( void  )
CFsm::~CFsm ( void  )
virtual

Member Function Documentation

CFsmEvent * CFsm::AddEvent ( unsigned int  eventType)
void CFsm::AddState ( unsigned int  state)
CFsmTransition * CFsm::AddTransition ( unsigned int  state,
unsigned int  eventType,
unsigned int  nextState 
)
CFsmTransition * CFsm::AddTransition ( unsigned int  state,
unsigned int  eventType,
unsigned int  nextState,
void *  pAction,
void *  pContext 
)
unsigned int CFsm::GetCurrState ( void  ) const
inline
const EventMap& CFsm::GetEvents ( void  ) const
inline
CFsmTransition* CFsm::GetEventTransition ( unsigned int  eventType) const
unsigned int CFsm::GetNextState ( void  ) const
inline
const StateSet& CFsm::GetStates ( void  ) const
inline
CFsmTransition * CFsm::GetTransition ( unsigned int  state,
unsigned int  eventType 
) const
const TransitionList& CFsm::GetTransitions ( void  ) const
inline
bool CFsm::IsDone ( void  ) const
virtual
bool CFsm::IsFirstTime ( void  ) const
private
bool CFsm::IsValidEvent ( unsigned int  eventType) const
bool CFsm::IsValidState ( unsigned int  state) const
CFsm::NONCOPYABLE ( CFsm  )
private
void CFsm::SetCurrState ( unsigned int  state)
void CFsm::SetFirstState ( unsigned int  firstState)
void CFsm::SetNextState ( unsigned int  nextState)
inline
void CFsm::Setup ( void  )
virtual

Constructs the state machine.

This method must be overriden so that connections are constructed for the particular state machine implemented

void CFsm::Shutdown ( void  )

Clear event, action and condition lists and reset state machine.

bool CFsm::Update ( unsigned int  eventType,
void *  pEventData 
)

Member Data Documentation

unsigned int CFsm::m_CurrState
private
bool CFsm::m_Done
private
EventMap CFsm::m_Events
private
unsigned int CFsm::m_FirstState
private
unsigned int CFsm::m_NextState
private
StateSet CFsm::m_States
private
TransitionList CFsm::m_Transitions
private

The documentation for this class was generated from the following files: