diff options
author | Kevin Smith <git@kismith.co.uk> | 2013-01-12 18:41:34 (GMT) |
---|---|---|
committer | Swift Review <review@swift.im> | 2013-01-13 10:36:26 (GMT) |
commit | f3bc816af1b0d61452de973963e453bf3b3f95a2 (patch) | |
tree | e895f8afa3580e6cff6f5ad2017d45bf147a17c2 /3rdParty/Boost/src/boost/proto/detail/preprocessed/deduce_domain_n.hpp | |
parent | 188fc285c6555eadd3c9d50ab8a94adcade78d89 (diff) | |
download | swift-f3bc816af1b0d61452de973963e453bf3b3f95a2.zip swift-f3bc816af1b0d61452de973963e453bf3b3f95a2.tar.bz2 |
Adding in the spirit Boost stuff
Change-Id: I4f127ce61667243b64081b0aa309028d5077045f
Diffstat (limited to '3rdParty/Boost/src/boost/proto/detail/preprocessed/deduce_domain_n.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/proto/detail/preprocessed/deduce_domain_n.hpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/proto/detail/preprocessed/deduce_domain_n.hpp b/3rdParty/Boost/src/boost/proto/detail/preprocessed/deduce_domain_n.hpp new file mode 100644 index 0000000..2a00035 --- /dev/null +++ b/3rdParty/Boost/src/boost/proto/detail/preprocessed/deduce_domain_n.hpp @@ -0,0 +1,119 @@ + /////////////////////////////////////////////////////////////////////////////// + // deduce_domain_n.hpp + // Definitions of common_domain[n] and deduce_domain[n] class templates. + // + // Copyright 2008 Eric Niebler. Distributed under the Boost + // Software License, Version 1.0. (See accompanying file + // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + template<typename A0 , typename A1 , typename A2> + struct common_domain3 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; + typedef common3 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2> + struct deduce_domain3 + : common_domain3< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type + > + {}; + template<typename A0 , typename A1 , typename A2 , typename A3> + struct common_domain4 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; + typedef common4 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2 , typename E3> + struct deduce_domain4 + : common_domain4< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type + > + {}; + template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4> + struct common_domain5 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; + typedef common5 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4> + struct deduce_domain5 + : common_domain5< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type + > + {}; + template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> + struct common_domain6 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; + typedef common6 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5> + struct deduce_domain6 + : common_domain6< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type + > + {}; + template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> + struct common_domain7 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7; + typedef common7 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6> + struct deduce_domain7 + : common_domain7< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type + > + {}; + template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> + struct common_domain8 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7; typedef typename common_domain2<common7, A7>::type common8; + typedef common8 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6 , typename E7> + struct deduce_domain8 + : common_domain8< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type , typename domain_of<E7 >::type + > + {}; + template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> + struct common_domain9 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7; typedef typename common_domain2<common7, A7>::type common8; typedef typename common_domain2<common8, A8>::type common9; + typedef common9 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6 , typename E7 , typename E8> + struct deduce_domain9 + : common_domain9< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type , typename domain_of<E7 >::type , typename domain_of<E8 >::type + > + {}; + template<typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> + struct common_domain10 + { + typedef A0 common1; + typedef typename common_domain2<common1, A1>::type common2; typedef typename common_domain2<common2, A2>::type common3; typedef typename common_domain2<common3, A3>::type common4; typedef typename common_domain2<common4, A4>::type common5; typedef typename common_domain2<common5, A5>::type common6; typedef typename common_domain2<common6, A6>::type common7; typedef typename common_domain2<common7, A7>::type common8; typedef typename common_domain2<common8, A8>::type common9; typedef typename common_domain2<common9, A9>::type common10; + typedef common10 type; + BOOST_PROTO_ASSERT_VALID_DOMAIN(type); + }; + template<typename E0 , typename E1 , typename E2 , typename E3 , typename E4 , typename E5 , typename E6 , typename E7 , typename E8 , typename E9> + struct deduce_domain10 + : common_domain10< + typename domain_of<E0 >::type , typename domain_of<E1 >::type , typename domain_of<E2 >::type , typename domain_of<E3 >::type , typename domain_of<E4 >::type , typename domain_of<E5 >::type , typename domain_of<E6 >::type , typename domain_of<E7 >::type , typename domain_of<E8 >::type , typename domain_of<E9 >::type + > + {}; |