1 2 #ifndef BOOST_FSM_EVENT_INCLUDED 3 #define BOOST_FSM_EVENT_INCLUDED 4 5 // Copyright Aleksey Gurtovoy 2002-2004 6 // 7 // Distributed under the Boost Software License, Version 1.0. 8 // (See accompanying file LICENSE_1_0.txt or copy at 9 // http://www.boost.org/LICENSE_1_0.txt) 10 // 11 // See http://www.boost.org/libs/mpl for documentation. 12 13 // $Id$ 14 // $Date$ 15 // $Revision$ 16 17 #include "base_event.hpp" 18 19 namespace fsm { namespace aux { 20 21 template< typename Derived > 22 struct event 23 : base_event 24 { 25 public: 26 typedef base_event base_t; 27 28 private: 29 30 #if defined(BOOST_NO_CXX11_SMART_PTR) 31 do_clonefsm::aux::event32 virtual std::auto_ptr<base_event> do_clone() const 33 { 34 return std::auto_ptr<base_event>( 35 new Derived(static_cast<Derived const&>(*this)) 36 ); 37 } 38 39 #else 40 41 virtual std::unique_ptr<base_event> do_clone() const 42 { 43 return std::unique_ptr<base_event>( 44 new Derived(static_cast<Derived const&>(*this)) 45 ); 46 } 47 48 #endif 49 50 }; 51 52 }} 53 54 #endif // BOOST_FSM_EVENT_INCLUDED 55