Boost logo

Boost :

Subject: Re: [boost] [msm]how to distinguish region ids?
From: Takatoshi Kondo (kondo_at_[hidden])
Date: 2011-06-24 05:18:57


Hi, Christophe

> I remember. We spoke at the end of the talk, right? I'm doing great, thanks
> :)
> I remember you required some feature but I forgot what it was. Was it this
> automatic region id calculation of pseudo entry state?

No, My request is junction pseudo state.
Here is a exsample model.

   E1[G1]/A1 [G4]/A4
S1------------+ +--------->S4
   E2[G2]/A2 V | [G5]/A5
S2----------->J-+--------->S5
   E3[G3]/A3 A | [G6]/A6
S3------------+ +--------->S6

If we can use the junction pseudo state, we write only 6 transitions in the code.
I know the transition below is equivalent.

   E1 [G1 && G4] / A1;A4
S1 ----------------------->S4

   E1 [G1 && G2] / A1;A5
S1 ----------------------->S5

...

But we have to write 9 transitions.
The difference is 3+3 or 3*3.

This is my request.

And I also requested the choice pseudo state.
But you didn't like this semantics. And I agreed.
We can use the (normal) state with guard only (event-less) transition instead of the choice pseudo state.
So I cancelled the my request.

BTW, I'm trying to write the guideline for UML modelers.
In the guideline, the relation between the UML element and the msm element will be described.
And it will be also described how to use the msm better.

I will show it to you when completing it.

Thanks,
Takatoshi

On Wed, 22 Jun 2011 19:37:05 +0200
"Christophe Henry" <christophe.j.henry_at_[hidden]> wrote:

> >> The region ids are numbered in the order of the initial_state typedef:
> >>
> >> typedef boost::mpl::vector<Start1,Start2> initial_state;
> >>
> >> Start1 will be the initial state of the first region (id 0), Start2 the
> >> initial state of the second region (id 1).
> >
> > Thanks, I understand.
> > I believe if I pass the out of range value then compile error should
> > occur.
> > And I tested.
> > 0 and 1 are OK. (expected)
> > -1 is NG. (expected)
> > But 2 is OK. (unexpected)
> > 3 or more is NG. (expected)
> >
> > I'm not expert of msm's implementation.
> >
> > I suspect that
> >
> > state_machine.hpp:(2256)
> > BOOST_STATIC_ASSERT(find_region_id<typename
> > StateType::wrapped_entry>::region_index <= nr_regions::value);
> >
> > should be
> >
> > BOOST_STATIC_ASSERT(find_region_id<typename
> > StateType::wrapped_entry>::region_index < nr_regions::value);
>
> Hi Takatoshi,
>
> Clearly you're right and it's a beginner's mistake. Thanks, I'll fix this
> immediately.
>
>
> >> Alternatively, you can omit the id and let MSM build a graph using
> >> mpl_graph
> >> and find this out for you (which will work if your pseudo entry is
> >> somehow
> >> connected to the initial state). Please note however that there is a
> >> compile-time cost for this.
> >
> >Great!! This is the function that I really want to.
>
> Good :)
> You're probably one of the first to use this new feature so your experience
> with it will be very useful.
> Please let me know how it went.
>
>
> > P.S.We met BoosoCon2010, how are you?
>
> I remember. We spoke at the end of the talk, right? I'm doing great, thanks
> :)
> I remember you required some feature but I forgot what it was. Was it this
> automatic region id calculation of pseudo entry state?
>
> Christophe
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk