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