
Chris Knight wrote:
On Wednesday 06 August 2008 9:59:43 am Andrey Semashev wrote:
I'm not sure what you mean by that "registering". The library does one event dispatching if it is known at compile time that no entry in the transition map will be triggered. If a transition map entry is triggered, then two dispatches are done - one to deliver event to the transition handler, and second to deliver the event to the active state. In any case, dispatching is very efficient and is basically a call on a function pointer that is acquired from an array by index.
I was referring to deferred event dispatching. I see on another thread that Boost.FSM does not support such a concept. I was simply noting that any such implementation can/should be done without the use of rtti/virtuals.
I don't see the connection between rtti/virtuals and event deferring. Anyway, in case of Boost.FSM virtual functions are only used for enter state handlers in case of run-time version of state switching. Type info is used for convenience only - it provides default state names and diagnostic information in case of exceptions.