the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at master 358 lines 13 kB view raw
1// Boost.Signals library 2 3// Copyright Douglas Gregor 2001-2006. Use, modification and 4// distribution is subject to the Boost Software License, Version 5// 1.0. (See accompanying file LICENSE_1_0.txt or copy at 6// http://www.boost.org/LICENSE_1_0.txt) 7 8// For more information, see http://www.boost.org/libs/signals 9 10#ifndef BOOST_SIGNAL_HPP 11#define BOOST_SIGNAL_HPP 12 13#ifndef BOOST_SIGNALS_MAX_ARGS 14# define BOOST_SIGNALS_MAX_ARGS 10 15#endif 16 17#include <boost/config.hpp> 18#include <boost/type_traits/function_traits.hpp> 19#include <boost/signals/signal0.hpp> 20#include <boost/signals/signal1.hpp> 21#include <boost/signals/signal2.hpp> 22#include <boost/signals/signal3.hpp> 23#include <boost/signals/signal4.hpp> 24#include <boost/signals/signal5.hpp> 25#include <boost/signals/signal6.hpp> 26#include <boost/signals/signal7.hpp> 27#include <boost/signals/signal8.hpp> 28#include <boost/signals/signal9.hpp> 29#include <boost/signals/signal10.hpp> 30#include <boost/function.hpp> 31 32#ifdef BOOST_HAS_ABI_HEADERS 33# include BOOST_ABI_PREFIX 34#endif 35 36namespace boost { 37#ifndef BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX 38 namespace BOOST_SIGNALS_NAMESPACE { 39 namespace detail { 40 template<int Arity, 41 typename Signature, 42 typename Combiner, 43 typename Group, 44 typename GroupCompare, 45 typename SlotFunction> 46 class real_get_signal_impl; 47 48 template<typename Signature, 49 typename Combiner, 50 typename Group, 51 typename GroupCompare, 52 typename SlotFunction> 53 class real_get_signal_impl<0, Signature, Combiner, Group, GroupCompare, 54 SlotFunction> 55 { 56 typedef function_traits<Signature> traits; 57 58 public: 59 typedef signal0<typename traits::result_type, 60 Combiner, 61 Group, 62 GroupCompare, 63 SlotFunction> type; 64 }; 65 66 template<typename Signature, 67 typename Combiner, 68 typename Group, 69 typename GroupCompare, 70 typename SlotFunction> 71 class real_get_signal_impl<1, Signature, Combiner, Group, GroupCompare, 72 SlotFunction> 73 { 74 typedef function_traits<Signature> traits; 75 76 public: 77 typedef signal1<typename traits::result_type, 78 typename traits::arg1_type, 79 Combiner, 80 Group, 81 GroupCompare, 82 SlotFunction> type; 83 }; 84 85 template<typename Signature, 86 typename Combiner, 87 typename Group, 88 typename GroupCompare, 89 typename SlotFunction> 90 class real_get_signal_impl<2, Signature, Combiner, Group, GroupCompare, 91 SlotFunction> 92 { 93 typedef function_traits<Signature> traits; 94 95 public: 96 typedef signal2<typename traits::result_type, 97 typename traits::arg1_type, 98 typename traits::arg2_type, 99 Combiner, 100 Group, 101 GroupCompare, 102 SlotFunction> type; 103 }; 104 105 template<typename Signature, 106 typename Combiner, 107 typename Group, 108 typename GroupCompare, 109 typename SlotFunction> 110 class real_get_signal_impl<3, Signature, Combiner, Group, GroupCompare, 111 SlotFunction> 112 { 113 typedef function_traits<Signature> traits; 114 115 public: 116 typedef signal3<typename traits::result_type, 117 typename traits::arg1_type, 118 typename traits::arg2_type, 119 typename traits::arg3_type, 120 Combiner, 121 Group, 122 GroupCompare, 123 SlotFunction> type; 124 }; 125 126 template<typename Signature, 127 typename Combiner, 128 typename Group, 129 typename GroupCompare, 130 typename SlotFunction> 131 class real_get_signal_impl<4, Signature, Combiner, Group, GroupCompare, 132 SlotFunction> 133 { 134 typedef function_traits<Signature> traits; 135 136 public: 137 typedef signal4<typename traits::result_type, 138 typename traits::arg1_type, 139 typename traits::arg2_type, 140 typename traits::arg3_type, 141 typename traits::arg4_type, 142 Combiner, 143 Group, 144 GroupCompare, 145 SlotFunction> type; 146 }; 147 148 template<typename Signature, 149 typename Combiner, 150 typename Group, 151 typename GroupCompare, 152 typename SlotFunction> 153 class real_get_signal_impl<5, Signature, Combiner, Group, GroupCompare, 154 SlotFunction> 155 { 156 typedef function_traits<Signature> traits; 157 158 public: 159 typedef signal5<typename traits::result_type, 160 typename traits::arg1_type, 161 typename traits::arg2_type, 162 typename traits::arg3_type, 163 typename traits::arg4_type, 164 typename traits::arg5_type, 165 Combiner, 166 Group, 167 GroupCompare, 168 SlotFunction> type; 169 }; 170 171 template<typename Signature, 172 typename Combiner, 173 typename Group, 174 typename GroupCompare, 175 typename SlotFunction> 176 class real_get_signal_impl<6, Signature, Combiner, Group, GroupCompare, 177 SlotFunction> 178 { 179 typedef function_traits<Signature> traits; 180 181 public: 182 typedef signal6<typename traits::result_type, 183 typename traits::arg1_type, 184 typename traits::arg2_type, 185 typename traits::arg3_type, 186 typename traits::arg4_type, 187 typename traits::arg5_type, 188 typename traits::arg6_type, 189 Combiner, 190 Group, 191 GroupCompare, 192 SlotFunction> type; 193 }; 194 195 template<typename Signature, 196 typename Combiner, 197 typename Group, 198 typename GroupCompare, 199 typename SlotFunction> 200 class real_get_signal_impl<7, Signature, Combiner, Group, GroupCompare, 201 SlotFunction> 202 { 203 typedef function_traits<Signature> traits; 204 205 public: 206 typedef signal7<typename traits::result_type, 207 typename traits::arg1_type, 208 typename traits::arg2_type, 209 typename traits::arg3_type, 210 typename traits::arg4_type, 211 typename traits::arg5_type, 212 typename traits::arg6_type, 213 typename traits::arg7_type, 214 Combiner, 215 Group, 216 GroupCompare, 217 SlotFunction> type; 218 }; 219 220 template<typename Signature, 221 typename Combiner, 222 typename Group, 223 typename GroupCompare, 224 typename SlotFunction> 225 class real_get_signal_impl<8, Signature, Combiner, Group, GroupCompare, 226 SlotFunction> 227 { 228 typedef function_traits<Signature> traits; 229 230 public: 231 typedef signal8<typename traits::result_type, 232 typename traits::arg1_type, 233 typename traits::arg2_type, 234 typename traits::arg3_type, 235 typename traits::arg4_type, 236 typename traits::arg5_type, 237 typename traits::arg6_type, 238 typename traits::arg7_type, 239 typename traits::arg8_type, 240 Combiner, 241 Group, 242 GroupCompare, 243 SlotFunction> type; 244 }; 245 246 template<typename Signature, 247 typename Combiner, 248 typename Group, 249 typename GroupCompare, 250 typename SlotFunction> 251 class real_get_signal_impl<9, Signature, Combiner, Group, GroupCompare, 252 SlotFunction> 253 { 254 typedef function_traits<Signature> traits; 255 256 public: 257 typedef signal9<typename traits::result_type, 258 typename traits::arg1_type, 259 typename traits::arg2_type, 260 typename traits::arg3_type, 261 typename traits::arg4_type, 262 typename traits::arg5_type, 263 typename traits::arg6_type, 264 typename traits::arg7_type, 265 typename traits::arg8_type, 266 typename traits::arg9_type, 267 Combiner, 268 Group, 269 GroupCompare, 270 SlotFunction> type; 271 }; 272 273 template<typename Signature, 274 typename Combiner, 275 typename Group, 276 typename GroupCompare, 277 typename SlotFunction> 278 class real_get_signal_impl<10, Signature, Combiner, Group, GroupCompare, 279 SlotFunction> 280 { 281 typedef function_traits<Signature> traits; 282 283 public: 284 typedef signal10<typename traits::result_type, 285 typename traits::arg1_type, 286 typename traits::arg2_type, 287 typename traits::arg3_type, 288 typename traits::arg4_type, 289 typename traits::arg5_type, 290 typename traits::arg6_type, 291 typename traits::arg7_type, 292 typename traits::arg8_type, 293 typename traits::arg9_type, 294 typename traits::arg10_type, 295 Combiner, 296 Group, 297 GroupCompare, 298 SlotFunction> type; 299 }; 300 301 template<typename Signature, 302 typename Combiner, 303 typename Group, 304 typename GroupCompare, 305 typename SlotFunction> 306 struct get_signal_impl : 307 public real_get_signal_impl<(function_traits<Signature>::arity), 308 Signature, 309 Combiner, 310 Group, 311 GroupCompare, 312 SlotFunction> 313 { 314 }; 315 316 } // end namespace detail 317 } // end namespace BOOST_SIGNALS_NAMESPACE 318 319 // Very lightweight wrapper around the signalN classes that allows signals to 320 // be created where the number of arguments does not need to be part of the 321 // class name. 322 template< 323 typename Signature, // function type R (T1, T2, ..., TN) 324 typename Combiner = last_value<typename function_traits<Signature>::result_type>, 325 typename Group = int, 326 typename GroupCompare = std::less<Group>, 327 typename SlotFunction = function<Signature> 328 > 329 class signal : 330 public BOOST_SIGNALS_NAMESPACE::detail::get_signal_impl<Signature, 331 Combiner, 332 Group, 333 GroupCompare, 334 SlotFunction>::type 335 { 336 typedef typename BOOST_SIGNALS_NAMESPACE::detail::get_signal_impl< 337 Signature, 338 Combiner, 339 Group, 340 GroupCompare, 341 SlotFunction>::type base_type; 342 343 public: 344 explicit signal(const Combiner& combiner = Combiner(), 345 const GroupCompare& group_compare = GroupCompare()) : 346 base_type(combiner, group_compare) 347 { 348 } 349 }; 350#endif // ndef BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX 351 352} // end namespace boost 353 354#ifdef BOOST_HAS_ABI_HEADERS 355# include BOOST_ABI_SUFFIX 356#endif 357 358#endif // BOOST_SIGNAL_HPP