Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:50:26

0001     ///////////////////////////////////////////////////////////////////////////////
0002     /// \file vararg_matches_impl.hpp
0003     /// Specializations of the vararg_matches_impl template
0004     //
0005     //  Copyright 2008 Eric Niebler. Distributed under the Boost
0006     //  Software License, Version 1.0. (See accompanying file
0007     //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0008     template<typename Args, typename Back, long To>
0009     struct vararg_matches_impl<Args, Back, 2, To>
0010       : and_2<
0011             matches_<
0012                 typename detail::expr_traits<typename Args::child1>::value_type::proto_derived_expr
0013               , typename detail::expr_traits<typename Args::child1>::value_type::proto_grammar
0014               , Back
0015             >::value
0016           , vararg_matches_impl<Args, Back, 2 + 1, To>
0017         >
0018     {};
0019     template<typename Args, typename Back>
0020     struct vararg_matches_impl<Args, Back, 2, 2>
0021       : matches_<
0022             typename detail::expr_traits<typename Args::child1>::value_type::proto_derived_expr
0023           , typename detail::expr_traits<typename Args::child1>::value_type::proto_grammar
0024           , Back
0025         >
0026     {};
0027     template<typename Args, typename Back, long To>
0028     struct vararg_matches_impl<Args, Back, 3, To>
0029       : and_2<
0030             matches_<
0031                 typename detail::expr_traits<typename Args::child2>::value_type::proto_derived_expr
0032               , typename detail::expr_traits<typename Args::child2>::value_type::proto_grammar
0033               , Back
0034             >::value
0035           , vararg_matches_impl<Args, Back, 3 + 1, To>
0036         >
0037     {};
0038     template<typename Args, typename Back>
0039     struct vararg_matches_impl<Args, Back, 3, 3>
0040       : matches_<
0041             typename detail::expr_traits<typename Args::child2>::value_type::proto_derived_expr
0042           , typename detail::expr_traits<typename Args::child2>::value_type::proto_grammar
0043           , Back
0044         >
0045     {};
0046     template<typename Args, typename Back, long To>
0047     struct vararg_matches_impl<Args, Back, 4, To>
0048       : and_2<
0049             matches_<
0050                 typename detail::expr_traits<typename Args::child3>::value_type::proto_derived_expr
0051               , typename detail::expr_traits<typename Args::child3>::value_type::proto_grammar
0052               , Back
0053             >::value
0054           , vararg_matches_impl<Args, Back, 4 + 1, To>
0055         >
0056     {};
0057     template<typename Args, typename Back>
0058     struct vararg_matches_impl<Args, Back, 4, 4>
0059       : matches_<
0060             typename detail::expr_traits<typename Args::child3>::value_type::proto_derived_expr
0061           , typename detail::expr_traits<typename Args::child3>::value_type::proto_grammar
0062           , Back
0063         >
0064     {};
0065     template<typename Args, typename Back, long To>
0066     struct vararg_matches_impl<Args, Back, 5, To>
0067       : and_2<
0068             matches_<
0069                 typename detail::expr_traits<typename Args::child4>::value_type::proto_derived_expr
0070               , typename detail::expr_traits<typename Args::child4>::value_type::proto_grammar
0071               , Back
0072             >::value
0073           , vararg_matches_impl<Args, Back, 5 + 1, To>
0074         >
0075     {};
0076     template<typename Args, typename Back>
0077     struct vararg_matches_impl<Args, Back, 5, 5>
0078       : matches_<
0079             typename detail::expr_traits<typename Args::child4>::value_type::proto_derived_expr
0080           , typename detail::expr_traits<typename Args::child4>::value_type::proto_grammar
0081           , Back
0082         >
0083     {};
0084     template<typename Args, typename Back, long To>
0085     struct vararg_matches_impl<Args, Back, 6, To>
0086       : and_2<
0087             matches_<
0088                 typename detail::expr_traits<typename Args::child5>::value_type::proto_derived_expr
0089               , typename detail::expr_traits<typename Args::child5>::value_type::proto_grammar
0090               , Back
0091             >::value
0092           , vararg_matches_impl<Args, Back, 6 + 1, To>
0093         >
0094     {};
0095     template<typename Args, typename Back>
0096     struct vararg_matches_impl<Args, Back, 6, 6>
0097       : matches_<
0098             typename detail::expr_traits<typename Args::child5>::value_type::proto_derived_expr
0099           , typename detail::expr_traits<typename Args::child5>::value_type::proto_grammar
0100           , Back
0101         >
0102     {};
0103     template<typename Args, typename Back, long To>
0104     struct vararg_matches_impl<Args, Back, 7, To>
0105       : and_2<
0106             matches_<
0107                 typename detail::expr_traits<typename Args::child6>::value_type::proto_derived_expr
0108               , typename detail::expr_traits<typename Args::child6>::value_type::proto_grammar
0109               , Back
0110             >::value
0111           , vararg_matches_impl<Args, Back, 7 + 1, To>
0112         >
0113     {};
0114     template<typename Args, typename Back>
0115     struct vararg_matches_impl<Args, Back, 7, 7>
0116       : matches_<
0117             typename detail::expr_traits<typename Args::child6>::value_type::proto_derived_expr
0118           , typename detail::expr_traits<typename Args::child6>::value_type::proto_grammar
0119           , Back
0120         >
0121     {};
0122     template<typename Args, typename Back, long To>
0123     struct vararg_matches_impl<Args, Back, 8, To>
0124       : and_2<
0125             matches_<
0126                 typename detail::expr_traits<typename Args::child7>::value_type::proto_derived_expr
0127               , typename detail::expr_traits<typename Args::child7>::value_type::proto_grammar
0128               , Back
0129             >::value
0130           , vararg_matches_impl<Args, Back, 8 + 1, To>
0131         >
0132     {};
0133     template<typename Args, typename Back>
0134     struct vararg_matches_impl<Args, Back, 8, 8>
0135       : matches_<
0136             typename detail::expr_traits<typename Args::child7>::value_type::proto_derived_expr
0137           , typename detail::expr_traits<typename Args::child7>::value_type::proto_grammar
0138           , Back
0139         >
0140     {};
0141     template<typename Args, typename Back, long To>
0142     struct vararg_matches_impl<Args, Back, 9, To>
0143       : and_2<
0144             matches_<
0145                 typename detail::expr_traits<typename Args::child8>::value_type::proto_derived_expr
0146               , typename detail::expr_traits<typename Args::child8>::value_type::proto_grammar
0147               , Back
0148             >::value
0149           , vararg_matches_impl<Args, Back, 9 + 1, To>
0150         >
0151     {};
0152     template<typename Args, typename Back>
0153     struct vararg_matches_impl<Args, Back, 9, 9>
0154       : matches_<
0155             typename detail::expr_traits<typename Args::child8>::value_type::proto_derived_expr
0156           , typename detail::expr_traits<typename Args::child8>::value_type::proto_grammar
0157           , Back
0158         >
0159     {};
0160     template<typename Args, typename Back, long To>
0161     struct vararg_matches_impl<Args, Back, 10, To>
0162       : and_2<
0163             matches_<
0164                 typename detail::expr_traits<typename Args::child9>::value_type::proto_derived_expr
0165               , typename detail::expr_traits<typename Args::child9>::value_type::proto_grammar
0166               , Back
0167             >::value
0168           , vararg_matches_impl<Args, Back, 10 + 1, To>
0169         >
0170     {};
0171     template<typename Args, typename Back>
0172     struct vararg_matches_impl<Args, Back, 10, 10>
0173       : matches_<
0174             typename detail::expr_traits<typename Args::child9>::value_type::proto_derived_expr
0175           , typename detail::expr_traits<typename Args::child9>::value_type::proto_grammar
0176           , Back
0177         >
0178     {};