1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/stdapis/boost/bind/storage.hpp Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -0,0 +1,475 @@
1.4 +#ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
1.5 +#define BOOST_BIND_STORAGE_HPP_INCLUDED
1.6 +
1.7 +// MS compatible compilers support #pragma once
1.8 +
1.9 +#if defined(_MSC_VER) && (_MSC_VER >= 1020)
1.10 +# pragma once
1.11 +#endif
1.12 +
1.13 +//
1.14 +// bind/storage.hpp
1.15 +//
1.16 +// boost/bind.hpp support header, optimized storage
1.17 +//
1.18 +// Copyright (c) 2006 Peter Dimov
1.19 +//
1.20 +// Distributed under the Boost Software License, Version 1.0.
1.21 +// See accompanying file LICENSE_1_0.txt or copy at
1.22 +// http://www.boost.org/LICENSE_1_0.txt
1.23 +//
1.24 +// See http://www.boost.org/libs/bind/bind.html for documentation.
1.25 +//
1.26 +
1.27 +#include <boost/config.hpp>
1.28 +#include <boost/bind/arg.hpp>
1.29 +
1.30 +#ifdef BOOST_MSVC
1.31 +# pragma warning(push)
1.32 +# pragma warning(disable: 4512) // assignment operator could not be generated
1.33 +#endif
1.34 +
1.35 +namespace boost
1.36 +{
1.37 +
1.38 +namespace _bi
1.39 +{
1.40 +
1.41 +// 1
1.42 +
1.43 +template<class A1> struct storage1
1.44 +{
1.45 + explicit storage1( A1 a1 ): a1_( a1 ) {}
1.46 +
1.47 + template<class V> void accept(V & v) const
1.48 + {
1.49 + BOOST_BIND_VISIT_EACH(v, a1_, 0);
1.50 + }
1.51 +
1.52 + A1 a1_;
1.53 +};
1.54 +
1.55 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( __BORLANDC__ )
1.56 +
1.57 +template<int I> struct storage1< boost::arg<I> >
1.58 +{
1.59 + explicit storage1( boost::arg<I> ) {}
1.60 +
1.61 + template<class V> void accept(V &) const { }
1.62 +
1.63 + static boost::arg<I> a1_() { return boost::arg<I>(); }
1.64 +};
1.65 +
1.66 +template<int I> struct storage1< boost::arg<I> (*) () >
1.67 +{
1.68 + explicit storage1( boost::arg<I> (*) () ) {}
1.69 +
1.70 + template<class V> void accept(V &) const { }
1.71 +
1.72 + static boost::arg<I> a1_() { return boost::arg<I>(); }
1.73 +};
1.74 +
1.75 +#endif
1.76 +
1.77 +// 2
1.78 +
1.79 +template<class A1, class A2> struct storage2: public storage1<A1>
1.80 +{
1.81 + typedef storage1<A1> inherited;
1.82 +
1.83 + storage2( A1 a1, A2 a2 ): storage1<A1>( a1 ), a2_( a2 ) {}
1.84 +
1.85 + template<class V> void accept(V & v) const
1.86 + {
1.87 + inherited::accept(v);
1.88 + BOOST_BIND_VISIT_EACH(v, a2_, 0);
1.89 + }
1.90 +
1.91 + A2 a2_;
1.92 +};
1.93 +
1.94 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.95 +
1.96 +template<class A1, int I> struct storage2< A1, boost::arg<I> >: public storage1<A1>
1.97 +{
1.98 + typedef storage1<A1> inherited;
1.99 +
1.100 + storage2( A1 a1, boost::arg<I> ): storage1<A1>( a1 ) {}
1.101 +
1.102 + template<class V> void accept(V & v) const
1.103 + {
1.104 + inherited::accept(v);
1.105 + }
1.106 +
1.107 + static boost::arg<I> a2_() { return boost::arg<I>(); }
1.108 +};
1.109 +
1.110 +template<class A1, int I> struct storage2< A1, boost::arg<I> (*) () >: public storage1<A1>
1.111 +{
1.112 + typedef storage1<A1> inherited;
1.113 +
1.114 + storage2( A1 a1, boost::arg<I> (*) () ): storage1<A1>( a1 ) {}
1.115 +
1.116 + template<class V> void accept(V & v) const
1.117 + {
1.118 + inherited::accept(v);
1.119 + }
1.120 +
1.121 + static boost::arg<I> a2_() { return boost::arg<I>(); }
1.122 +};
1.123 +
1.124 +#endif
1.125 +
1.126 +// 3
1.127 +
1.128 +template<class A1, class A2, class A3> struct storage3: public storage2< A1, A2 >
1.129 +{
1.130 + typedef storage2<A1, A2> inherited;
1.131 +
1.132 + storage3( A1 a1, A2 a2, A3 a3 ): storage2<A1, A2>( a1, a2 ), a3_( a3 ) {}
1.133 +
1.134 + template<class V> void accept(V & v) const
1.135 + {
1.136 + inherited::accept(v);
1.137 + BOOST_BIND_VISIT_EACH(v, a3_, 0);
1.138 + }
1.139 +
1.140 + A3 a3_;
1.141 +};
1.142 +
1.143 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.144 +
1.145 +template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> >: public storage2< A1, A2 >
1.146 +{
1.147 + typedef storage2<A1, A2> inherited;
1.148 +
1.149 + storage3( A1 a1, A2 a2, boost::arg<I> ): storage2<A1, A2>( a1, a2 ) {}
1.150 +
1.151 + template<class V> void accept(V & v) const
1.152 + {
1.153 + inherited::accept(v);
1.154 + }
1.155 +
1.156 + static boost::arg<I> a3_() { return boost::arg<I>(); }
1.157 +};
1.158 +
1.159 +template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> (*) () >: public storage2< A1, A2 >
1.160 +{
1.161 + typedef storage2<A1, A2> inherited;
1.162 +
1.163 + storage3( A1 a1, A2 a2, boost::arg<I> (*) () ): storage2<A1, A2>( a1, a2 ) {}
1.164 +
1.165 + template<class V> void accept(V & v) const
1.166 + {
1.167 + inherited::accept(v);
1.168 + }
1.169 +
1.170 + static boost::arg<I> a3_() { return boost::arg<I>(); }
1.171 +};
1.172 +
1.173 +#endif
1.174 +
1.175 +// 4
1.176 +
1.177 +template<class A1, class A2, class A3, class A4> struct storage4: public storage3< A1, A2, A3 >
1.178 +{
1.179 + typedef storage3<A1, A2, A3> inherited;
1.180 +
1.181 + storage4( A1 a1, A2 a2, A3 a3, A4 a4 ): storage3<A1, A2, A3>( a1, a2, a3 ), a4_( a4 ) {}
1.182 +
1.183 + template<class V> void accept(V & v) const
1.184 + {
1.185 + inherited::accept(v);
1.186 + BOOST_BIND_VISIT_EACH(v, a4_, 0);
1.187 + }
1.188 +
1.189 + A4 a4_;
1.190 +};
1.191 +
1.192 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.193 +
1.194 +template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> >: public storage3< A1, A2, A3 >
1.195 +{
1.196 + typedef storage3<A1, A2, A3> inherited;
1.197 +
1.198 + storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
1.199 +
1.200 + template<class V> void accept(V & v) const
1.201 + {
1.202 + inherited::accept(v);
1.203 + }
1.204 +
1.205 + static boost::arg<I> a4_() { return boost::arg<I>(); }
1.206 +};
1.207 +
1.208 +template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> (*) () >: public storage3< A1, A2, A3 >
1.209 +{
1.210 + typedef storage3<A1, A2, A3> inherited;
1.211 +
1.212 + storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> (*) () ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
1.213 +
1.214 + template<class V> void accept(V & v) const
1.215 + {
1.216 + inherited::accept(v);
1.217 + }
1.218 +
1.219 + static boost::arg<I> a4_() { return boost::arg<I>(); }
1.220 +};
1.221 +
1.222 +#endif
1.223 +
1.224 +// 5
1.225 +
1.226 +template<class A1, class A2, class A3, class A4, class A5> struct storage5: public storage4< A1, A2, A3, A4 >
1.227 +{
1.228 + typedef storage4<A1, A2, A3, A4> inherited;
1.229 +
1.230 + storage5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ), a5_( a5 ) {}
1.231 +
1.232 + template<class V> void accept(V & v) const
1.233 + {
1.234 + inherited::accept(v);
1.235 + BOOST_BIND_VISIT_EACH(v, a5_, 0);
1.236 + }
1.237 +
1.238 + A5 a5_;
1.239 +};
1.240 +
1.241 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.242 +
1.243 +template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> >: public storage4< A1, A2, A3, A4 >
1.244 +{
1.245 + typedef storage4<A1, A2, A3, A4> inherited;
1.246 +
1.247 + storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
1.248 +
1.249 + template<class V> void accept(V & v) const
1.250 + {
1.251 + inherited::accept(v);
1.252 + }
1.253 +
1.254 + static boost::arg<I> a5_() { return boost::arg<I>(); }
1.255 +};
1.256 +
1.257 +template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> (*) () >: public storage4< A1, A2, A3, A4 >
1.258 +{
1.259 + typedef storage4<A1, A2, A3, A4> inherited;
1.260 +
1.261 + storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> (*) () ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
1.262 +
1.263 + template<class V> void accept(V & v) const
1.264 + {
1.265 + inherited::accept(v);
1.266 + }
1.267 +
1.268 + static boost::arg<I> a5_() { return boost::arg<I>(); }
1.269 +};
1.270 +
1.271 +#endif
1.272 +
1.273 +// 6
1.274 +
1.275 +template<class A1, class A2, class A3, class A4, class A5, class A6> struct storage6: public storage5< A1, A2, A3, A4, A5 >
1.276 +{
1.277 + typedef storage5<A1, A2, A3, A4, A5> inherited;
1.278 +
1.279 + storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ), a6_( a6 ) {}
1.280 +
1.281 + template<class V> void accept(V & v) const
1.282 + {
1.283 + inherited::accept(v);
1.284 + BOOST_BIND_VISIT_EACH(v, a6_, 0);
1.285 + }
1.286 +
1.287 + A6 a6_;
1.288 +};
1.289 +
1.290 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.291 +
1.292 +template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> >: public storage5< A1, A2, A3, A4, A5 >
1.293 +{
1.294 + typedef storage5<A1, A2, A3, A4, A5> inherited;
1.295 +
1.296 + storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
1.297 +
1.298 + template<class V> void accept(V & v) const
1.299 + {
1.300 + inherited::accept(v);
1.301 + }
1.302 +
1.303 + static boost::arg<I> a6_() { return boost::arg<I>(); }
1.304 +};
1.305 +
1.306 +template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> (*) () >: public storage5< A1, A2, A3, A4, A5 >
1.307 +{
1.308 + typedef storage5<A1, A2, A3, A4, A5> inherited;
1.309 +
1.310 + storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> (*) () ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
1.311 +
1.312 + template<class V> void accept(V & v) const
1.313 + {
1.314 + inherited::accept(v);
1.315 + }
1.316 +
1.317 + static boost::arg<I> a6_() { return boost::arg<I>(); }
1.318 +};
1.319 +
1.320 +#endif
1.321 +
1.322 +// 7
1.323 +
1.324 +template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct storage7: public storage6< A1, A2, A3, A4, A5, A6 >
1.325 +{
1.326 + typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
1.327 +
1.328 + storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ), a7_( a7 ) {}
1.329 +
1.330 + template<class V> void accept(V & v) const
1.331 + {
1.332 + inherited::accept(v);
1.333 + BOOST_BIND_VISIT_EACH(v, a7_, 0);
1.334 + }
1.335 +
1.336 + A7 a7_;
1.337 +};
1.338 +
1.339 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.340 +
1.341 +template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> >: public storage6< A1, A2, A3, A4, A5, A6 >
1.342 +{
1.343 + typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
1.344 +
1.345 + storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
1.346 +
1.347 + template<class V> void accept(V & v) const
1.348 + {
1.349 + inherited::accept(v);
1.350 + }
1.351 +
1.352 + static boost::arg<I> a7_() { return boost::arg<I>(); }
1.353 +};
1.354 +
1.355 +template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> (*) () >: public storage6< A1, A2, A3, A4, A5, A6 >
1.356 +{
1.357 + typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
1.358 +
1.359 + storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> (*) () ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
1.360 +
1.361 + template<class V> void accept(V & v) const
1.362 + {
1.363 + inherited::accept(v);
1.364 + }
1.365 +
1.366 + static boost::arg<I> a7_() { return boost::arg<I>(); }
1.367 +};
1.368 +
1.369 +#endif
1.370 +
1.371 +// 8
1.372 +
1.373 +template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct storage8: public storage7< A1, A2, A3, A4, A5, A6, A7 >
1.374 +{
1.375 + typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
1.376 +
1.377 + storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ), a8_( a8 ) {}
1.378 +
1.379 + template<class V> void accept(V & v) const
1.380 + {
1.381 + inherited::accept(v);
1.382 + BOOST_BIND_VISIT_EACH(v, a8_, 0);
1.383 + }
1.384 +
1.385 + A8 a8_;
1.386 +};
1.387 +
1.388 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.389 +
1.390 +template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
1.391 +{
1.392 + typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
1.393 +
1.394 + storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
1.395 +
1.396 + template<class V> void accept(V & v) const
1.397 + {
1.398 + inherited::accept(v);
1.399 + }
1.400 +
1.401 + static boost::arg<I> a8_() { return boost::arg<I>(); }
1.402 +};
1.403 +
1.404 +template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> (*) () >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
1.405 +{
1.406 + typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
1.407 +
1.408 + storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> (*) () ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
1.409 +
1.410 + template<class V> void accept(V & v) const
1.411 + {
1.412 + inherited::accept(v);
1.413 + }
1.414 +
1.415 + static boost::arg<I> a8_() { return boost::arg<I>(); }
1.416 +};
1.417 +
1.418 +#endif
1.419 +
1.420 +// 9
1.421 +
1.422 +template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct storage9: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
1.423 +{
1.424 + typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
1.425 +
1.426 + storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ), a9_( a9 ) {}
1.427 +
1.428 + template<class V> void accept(V & v) const
1.429 + {
1.430 + inherited::accept(v);
1.431 + BOOST_BIND_VISIT_EACH(v, a9_, 0);
1.432 + }
1.433 +
1.434 + A9 a9_;
1.435 +};
1.436 +
1.437 +#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
1.438 +
1.439 +template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
1.440 +{
1.441 + typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
1.442 +
1.443 + storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
1.444 +
1.445 + template<class V> void accept(V & v) const
1.446 + {
1.447 + inherited::accept(v);
1.448 + }
1.449 +
1.450 + static boost::arg<I> a9_() { return boost::arg<I>(); }
1.451 +};
1.452 +
1.453 +template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> (*) () >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
1.454 +{
1.455 + typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
1.456 +
1.457 + storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> (*) () ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
1.458 +
1.459 + template<class V> void accept(V & v) const
1.460 + {
1.461 + inherited::accept(v);
1.462 + }
1.463 +
1.464 + static boost::arg<I> a9_() { return boost::arg<I>(); }
1.465 +};
1.466 +
1.467 +#endif
1.468 +
1.469 +} // namespace _bi
1.470 +
1.471 +} // namespace boost
1.472 +
1.473 +#ifdef BOOST_MSVC
1.474 +# pragma warning(default: 4512) // assignment operator could not be generated
1.475 +# pragma warning(pop)
1.476 +#endif
1.477 +
1.478 +#endif // #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED