the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at master 78 lines 2.0 kB view raw
1#ifndef BOOST_STATECHART_EVENT_HPP_INCLUDED 2#define BOOST_STATECHART_EVENT_HPP_INCLUDED 3////////////////////////////////////////////////////////////////////////////// 4// Copyright 2002-2007 Andreas Huber Doenni 5// Distributed under the Boost Software License, Version 1.0. (See accompany- 6// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7////////////////////////////////////////////////////////////////////////////// 8 9 10 11#include <boost/statechart/event_base.hpp> 12#include <boost/statechart/detail/rtti_policy.hpp> 13#include <boost/statechart/detail/memory.hpp> 14 15#include <boost/cast.hpp> // boost::polymorphic_downcast 16 17#include <memory> // std::allocator 18 19 20 21namespace boost 22{ 23namespace statechart 24{ 25 26 27 28////////////////////////////////////////////////////////////////////////////// 29template< class MostDerived, class Allocator = std::allocator< void > > 30class event : public detail::rtti_policy::rtti_derived_type< 31 MostDerived, event_base > 32{ 33 public: 34 ////////////////////////////////////////////////////////////////////////// 35 // Compiler-generated copy constructor and copy assignment operator are 36 // fine 37 38 void * operator new( std::size_t size ) 39 { 40 return detail::allocate< MostDerived, Allocator >( size ); 41 } 42 43 void * operator new( std::size_t, void * p ) 44 { 45 return p; 46 } 47 48 void operator delete( void * pEvent ) 49 { 50 detail::deallocate< MostDerived, Allocator >( pEvent ); 51 } 52 53 void operator delete( void * pEvent, void * p ) 54 { 55 } 56 57 protected: 58 ////////////////////////////////////////////////////////////////////////// 59 event() {} 60 virtual ~event() {} 61 62 private: 63 ////////////////////////////////////////////////////////////////////////// 64 virtual intrusive_ptr< const event_base > clone() const 65 { 66 return intrusive_ptr< const event_base >( new MostDerived( 67 *polymorphic_downcast< const MostDerived * >( this ) ) ); 68 } 69}; 70 71 72 73} // namespace statechart 74} // namespace boost 75 76 77 78#endif