Boost logo

Boost Users :

From: Stefan Steuerwald (salsasepp_at_[hidden])
Date: 2008-09-01 10:38:28


Dear statecharters,

I would like to request help with a problem building a statemachine from
states that I
derive from simple_state. Here is minimal code that defines two states
StateA and StateB
and an event cycling between these two:

#include <boost/statechart/state_machine.hpp>
#include <boost/statechart/simple_state.hpp>
#include <boost/statechart/event.hpp>
#include <boost/statechart/transition.hpp>

namespace sc = boost::statechart;
using namespace std;

class StateA;
struct StateMachine : sc::state_machine< StateMachine, StateA >
{
    void unconsumed_event( const sc::event_base & evt ) { cout <<
"unconsumed!" << endl; }
};

class Event : public sc::event< Event > {};

struct StateA : sc::simple_state< StateA, StateMachine >
{
    typedef sc::transition< Event, StateB > reactions;
};

struct StateB : sc::simple_state< StateB, StateMachine >
{
    typedef sc::transition< Event, StateA > reactions;
};

-----------------
This works fine as expected with process_event( Event() ).
However, I would like to derive the states of my statechart from a class
like this:

template<class context>
struct State : sc::simple_state< State<context>, context >
{
    // Some application-specific things
};

struct StateA : State< StateMachine >
{
    typedef sc::transition< Event, StateB > reactions;
};

struct StateB : State< StateMachine >
{
    typedef sc::transition< Event, StateA > reactions;
};

-----------------
Now, calling process_event( Event() ) does not do anything, except turning
the event up
at the StateMachine::unconsumed_event() method.
I am aware of this one:

http://www.boost.org/doc/libs/1_35_0/libs/statechart/doc/faq.html#TemplatedStates
but I'm not sure whether this applies in any way to my case, as I don't have
any compiler
errors.
May I be violating some prerequisites here?

Thank you for any help you can provide,
  Stefan.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net