annotate DEPENDENCIES/generic/include/boost/statechart/event.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 #ifndef BOOST_STATECHART_EVENT_HPP_INCLUDED
Chris@16 2 #define BOOST_STATECHART_EVENT_HPP_INCLUDED
Chris@16 3 //////////////////////////////////////////////////////////////////////////////
Chris@16 4 // Copyright 2002-2007 Andreas Huber Doenni
Chris@16 5 // Distributed under the Boost Software License, Version 1.0. (See accompany-
Chris@16 6 // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 7 //////////////////////////////////////////////////////////////////////////////
Chris@16 8
Chris@16 9
Chris@16 10
Chris@16 11 #include <boost/statechart/event_base.hpp>
Chris@16 12 #include <boost/statechart/detail/rtti_policy.hpp>
Chris@16 13 #include <boost/statechart/detail/memory.hpp>
Chris@16 14
Chris@101 15 #include <boost/polymorphic_cast.hpp> // boost::polymorphic_downcast
Chris@16 16
Chris@16 17 #include <memory> // std::allocator
Chris@16 18
Chris@16 19
Chris@16 20
Chris@16 21 namespace boost
Chris@16 22 {
Chris@16 23 namespace statechart
Chris@16 24 {
Chris@16 25
Chris@16 26
Chris@16 27
Chris@16 28 //////////////////////////////////////////////////////////////////////////////
Chris@16 29 template< class MostDerived, class Allocator = std::allocator< void > >
Chris@16 30 class event : public detail::rtti_policy::rtti_derived_type<
Chris@16 31 MostDerived, event_base >
Chris@16 32 {
Chris@16 33 public:
Chris@16 34 //////////////////////////////////////////////////////////////////////////
Chris@16 35 // Compiler-generated copy constructor and copy assignment operator are
Chris@16 36 // fine
Chris@16 37
Chris@16 38 void * operator new( std::size_t size )
Chris@16 39 {
Chris@16 40 return detail::allocate< MostDerived, Allocator >( size );
Chris@16 41 }
Chris@16 42
Chris@16 43 void * operator new( std::size_t, void * p )
Chris@16 44 {
Chris@16 45 return p;
Chris@16 46 }
Chris@16 47
Chris@16 48 void operator delete( void * pEvent )
Chris@16 49 {
Chris@16 50 detail::deallocate< MostDerived, Allocator >( pEvent );
Chris@16 51 }
Chris@16 52
Chris@16 53 void operator delete( void * pEvent, void * p )
Chris@16 54 {
Chris@16 55 }
Chris@16 56
Chris@16 57 protected:
Chris@16 58 //////////////////////////////////////////////////////////////////////////
Chris@16 59 event() {}
Chris@16 60 virtual ~event() {}
Chris@16 61
Chris@16 62 private:
Chris@16 63 //////////////////////////////////////////////////////////////////////////
Chris@16 64 virtual intrusive_ptr< const event_base > clone() const
Chris@16 65 {
Chris@16 66 return intrusive_ptr< const event_base >( new MostDerived(
Chris@16 67 *polymorphic_downcast< const MostDerived * >( this ) ) );
Chris@16 68 }
Chris@16 69 };
Chris@16 70
Chris@16 71
Chris@16 72
Chris@16 73 } // namespace statechart
Chris@16 74 } // namespace boost
Chris@16 75
Chris@16 76
Chris@16 77
Chris@16 78 #endif