143 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			143 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								    ///////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								    /// \file lambda_matches.hpp
							 | 
						||
| 
								 | 
							
								    /// Specializations of the lambda_matches template
							 | 
						||
| 
								 | 
							
								    //
							 | 
						||
| 
								 | 
							
								    //  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<
							 | 
						||
| 
								 | 
							
								        template<typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(2)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_2<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(3)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_3<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2 , Expr3>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2 , Grammar3>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(4)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_4<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(5)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_5<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename , typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(6)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_6<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename , typename , typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(7)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_7<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename , typename , typename , typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(8)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_8<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename , typename , typename , typename , typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7 , typename Expr8
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7 , typename Grammar8
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7 , Expr8>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7 , Grammar8>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(9)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_9<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 > , lambda_matches< Expr8 , Grammar8 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    template<
							 | 
						||
| 
								 | 
							
								        template<typename , typename , typename , typename , typename , typename , typename , typename , typename , typename> class T
							 | 
						||
| 
								 | 
							
								        , typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7 , typename Expr8 , typename Expr9
							 | 
						||
| 
								 | 
							
								        , typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7 , typename Grammar8 , typename Grammar9
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    struct lambda_matches<
							 | 
						||
| 
								 | 
							
								        T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7 , Expr8 , Expr9>
							 | 
						||
| 
								 | 
							
								      , T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7 , Grammar8 , Grammar9>
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_TEMPLATE_ARITY_PARAM(10)
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								      : and_10<
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr0 , Grammar0 >::value,
							 | 
						||
| 
								 | 
							
								            lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 > , lambda_matches< Expr8 , Grammar8 > , lambda_matches< Expr9 , Grammar9 >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 |