diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/statechart/event.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/statechart/event.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,69 @@ +#ifndef BOOST_STATECHART_EVENT_HPP_INCLUDED +#define BOOST_STATECHART_EVENT_HPP_INCLUDED +////////////////////////////////////////////////////////////////////////////// +// Copyright 2002-2006 Andreas Huber Doenni +// Distributed under the Boost Software License, Version 1.0. (See accompany- +// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +////////////////////////////////////////////////////////////////////////////// + + + +#include +#include +#include + +#include // boost::polymorphic_downcast + +#include // std::allocator + + + +namespace boost +{ +namespace statechart +{ + + + +////////////////////////////////////////////////////////////////////////////// +template< class MostDerived, class Allocator = std::allocator< void > > +class event : public detail::rtti_policy::rtti_derived_type< + MostDerived, event_base > +{ + public: + ////////////////////////////////////////////////////////////////////////// + // Compiler-generated copy constructor and copy assignment operator are + // fine + + void * operator new( std::size_t size ) + { + return detail::allocate< MostDerived, Allocator >( size ); + } + + void operator delete( void * pEvent ) + { + detail::deallocate< MostDerived, Allocator >( pEvent ); + } + + protected: + ////////////////////////////////////////////////////////////////////////// + event() {} + virtual ~event() {} + + private: + ////////////////////////////////////////////////////////////////////////// + virtual intrusive_ptr< const event_base > clone() const + { + return intrusive_ptr< const event_base >( new MostDerived( + *polymorphic_downcast< const MostDerived * >( this ) ) ); + } +}; + + + +} // namespace statechart +} // namespace boost + + + +#endif