the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 122 lines 2.9 kB view raw
1#ifndef BOOST_STATECHART_RESULT_HPP_INCLUDED 2#define BOOST_STATECHART_RESULT_HPP_INCLUDED 3////////////////////////////////////////////////////////////////////////////// 4// Copyright 2002-2010 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/assert.hpp> 12 13 14 15namespace boost 16{ 17namespace statechart 18{ 19namespace detail 20{ 21 22 23 24////////////////////////////////////////////////////////////////////////////// 25enum reaction_result 26{ 27 no_reaction, 28 do_forward_event, 29 do_discard_event, 30 do_defer_event, 31 consumed 32}; 33 34struct result_utility; 35 36////////////////////////////////////////////////////////////////////////////// 37class safe_reaction_result 38{ 39 public: 40 ////////////////////////////////////////////////////////////////////////// 41 safe_reaction_result( const safe_reaction_result & other ) : 42 reactionResult_( other.reactionResult_ ) 43 { 44 // This assert fails when an attempt is made to make multiple copies of 45 // a result value. This makes little sense, given the requirement that 46 // an obtained result value must be returned out of the react function. 47 BOOST_ASSERT( reactionResult_ != consumed ); 48 other.reactionResult_ = consumed; 49 } 50 51 ~safe_reaction_result() 52 { 53 // This assert fails when an obtained result value is not returned out 54 // of the react() function. This can happen if the user accidentally 55 // makes more than one call to reaction functions inside react() or 56 // accidentally makes one or more calls to reaction functions outside 57 // react() 58 BOOST_ASSERT( reactionResult_ == consumed ); 59 } 60 61 private: 62 ////////////////////////////////////////////////////////////////////////// 63 safe_reaction_result( reaction_result reactionResult ) : 64 reactionResult_( reactionResult ) 65 { 66 } 67 68 operator reaction_result() const 69 { 70 const reaction_result val = reactionResult_; 71 reactionResult_ = consumed; 72 return val; 73 } 74 75 safe_reaction_result & operator=( const safe_reaction_result & ); 76 77 mutable reaction_result reactionResult_; 78 79 friend struct result_utility; 80}; 81 82 83 84} // namespace detail 85 86 87 88#ifdef NDEBUG 89 typedef detail::reaction_result result; 90#else 91 typedef detail::safe_reaction_result result; 92#endif 93 94 95namespace detail 96{ 97 98 99 100////////////////////////////////////////////////////////////////////////////// 101struct result_utility 102{ 103 static ::boost::statechart::result make_result( reaction_result value ) 104 { 105 return value; 106 } 107 108 static reaction_result get_result( ::boost::statechart::result value ) 109 { 110 return value; 111 } 112}; 113 114 115 116} // namespace detail 117} // namespace statechart 118} // namespace boost 119 120 121 122#endif