
Hi Christophe, Thank you for your effort and commit. I am really impressed at your brilliant solution! I modified my example using the new any supports. See 41_FingerPrintExampleAnyEvent.cpp It works perfectly. As you mentioned, your solution not only improves the sub-machines' reusability but also provides access to events. This is something that I really want to. Let me clarify my understanding. msm::front::none is a completion_event. A transition that corresponds to completion_event can be processed without trigger events. Kleene event is not a completion_event. Therefore, it is not invoked without trigger events, but any events are accepted as a trigger. Furthermore, the trigger event is preserved as boost::any. By the way, I'm writing the guideline for UML modelers. My goal is to describe how to implement Each UML element into Boost.Msm. Maybe I talked about it last year. And it is coming along some extent now. http://redboltz.wikidot.com/boost-msm-guide Thanks, Takatoshi On Fri, Jun 1, 2012 at 6:17 AM, Christophe Henry <christophe.j.henry@googlemail.com> wrote:
Hi Takatoshi,
I thought a bit last night after our last discussion and I come to such a transition in your first example:
====> msmf::Row < Entry1 , boost::any, State2_2 , ExecuteEntry, msmf::none >
Not that the event now is boost::any. And it matches your Event1 of course. This way you get the same effect as your none and I keep my event data as I can any_cast (note to self, also plan to support Steven's new pimped any. Name suggestion: boost::pimped_any :) ).
The added advantage is that this will apply to all of MSM's transitions, not just pseudo entries.
I just committed a version where this is implemented (trunk rev. 78785). You can play with it and see if it solves your problem. I'm pretty confident it will work, but I need to make more tests and update the doc (but it's getting late).
For non-eUML front-ends, boost::any is now an acceptable event, for eUML I added an event named "kleene" behaving like a boost::any. With both, the original event is saved in the boost::any, which allows you some more entertaining guards or actions ;-)
HTH,
Christophe
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost