Boost logo

Boost :

Subject: Re: [boost] [msm]how to distinguish region ids?
From: Christophe Henry (christophe.j.henry_at_[hidden])
Date: 2011-06-22 13:37:05


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


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