ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> boost
boost
[boost] Re: [prereview request][fsm]
by David Abrahams other posts by this author
May 23 2004 2:32AM messages near this date
[boost] Re: [prereview request][fsm] | RE: [boost] Re: [Boost.Test] New testing procedure?
"Andreas Huber" <ah2003@[...].net>  writes:

>  Dear Boosters
> 
>  I think boost::fsm has finally reached a state that is worthy of a formal
>  review.
> 
>  The .zip can be found here:
> 
>  http://boost-sandbox.sf.net/fsm.zip
> 
>  The docs are also available online:
> 
>  http://boost-sandbox.sf.net/libs/fsm
> 
>  As always: Feedback is highly welcome.

After a brief glance, it looks like a very sophisticated and
well-thought-out library.  I'd like to know if following state transitions
require dynamic allocation or not.

I also have some questions about this:

>  Exception handling
>  ------------------
>  
>  Exceptions can be propagated from all user code except from state exit
>  actions (mapped to destructors and destructors should virtually never
>  throw in C++). 

That seems like a bad limitation, and for me it calls into question
the idea of mapping state exit to destructors.  Can you explain why
that's the right design?

>  Out of the box, state_machine<> does the following: 
>  
>  1. The exception is caught 

By the state machine framework?

>  2. In the catch block, an exception_thrown event is allocated on the
>     stack 
>  
>  3. Also in the catch block, an immediate dispatch of the
>     exception_thrown event is attempted. 

Hum.  So basically, any throwing code that could be invoked from
processing exception_thrown and from processing some other event had
better be re-entrant?

>     That is, possibly remaining events in the queue are dispatched
>     only after the exception has been handled successfully

I don't understand the relationship here.

>  4. If the exception was handled successfully

What does that mean?  Who signals "successful handling", and how do
they do it?

>     the state machine returns to the client normally. If the
>     exception could not be handled successfully, the original
>     exception is rethrown so that the client of the state machine can
>     handle the exception
>  
>  This behavior is implemented in the exception_translator class
>  template, which is the default for the ExceptionTranslator parameter
>  of the state_machine class template. It was introduced because users
>  would want to change this on some platforms to work around buggy
>  exception handling implementations (see Discriminating exceptions).

Interesting; I'll have to look at that...

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Thread:
Andreas Huber
Andreas Huber
Andreas Huber
Darryl Green
Darryl Green
Darryl Green
Darryl Green
Andreas Huber
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
E. Gladyshev
Darryl Green
Andreas Huber
Johan Nilsson
Darryl Green
Andreas Huber
Andreas Huber
Rob Stewart
Andreas Huber
Rob Stewart
Johan Nilsson
Andreas Huber
Andreas Huber
Johan Nilsson
Johan Nilsson
Andreas Huber
Andreas Huber
Andreas Huber
Darryl Green
David Abrahams
Andreas Huber
Andreas Huber
Rob Stewart
Andreas Huber
Andreas Huber
Andreas Huber
Andreas Huber
David Abrahams
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
Darryl Green
David Bergman
David Abrahams
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
Andreas Huber
Andreas Huber
Andreas Huber
Darryl Green
Andreas Huber
Robert Bell
David Abrahams
E. Gladyshev
Johan Nilsson
Jeff Flinn
Johan Nilsson
Andreas Huber
Jeff Flinn
E. Gladyshev
Andreas Huber
Andreas Huber
Iain K. Hanson
Robert Bell
David Abrahams
E. Gladyshev
Andreas Huber
Andreas Huber
David B. Held
Andreas Huber
Johan Nilsson
Johan Nilsson
Peter Dimov
Johan Nilsson
Topher Cooper
Johan Nilsson
Johan Nilsson
Andreas Huber
Robert Bell
Andreas Huber
Andreas Huber
Andreas Huber
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
David Abrahams
Andreas Huber
E. Gladyshev
E. Gladyshev
Rob Stewart
E. Gladyshev
E. Gladyshev
Rob Stewart
E. Gladyshev
Rob Stewart
E. Gladyshev
Andreas Huber
Andreas Huber
E. Gladyshev
Marshall Clow
Marshall Clow
E. Gladyshev
David Abrahams
Darryl Green
E. Gladyshev
Andreas Huber
Andreas Huber
Robert Bell
Darryl Green
Pavel Vozenilek
David Abrahams
Andreas Huber
David Abrahams
Gregory Colvin
Pavel Vozenilek
Andreas Huber
Robert Bell
Andreas Huber
Johan Nilsson
Andreas Huber
Andreas Huber
Johan Nilsson
Johan Nilsson
Rob Stewart
Johan Nilsson
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
Andreas Huber
Johan Nilsson
Rob Stewart
Kwee Heong Tan
David Abrahams
Andreas Huber
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
Andreas Huber
David Abrahams
Andreas Huber
John Fuller
David Abrahams
David Abrahams
Andreas Huber
Andreas Huber
Aleksey Gurtovoy
David Abrahams
David Abrahams
David Abrahams
Andreas Huber
David Abrahams
David Abrahams

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved