Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/spirit/home/support/handles_container.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 /*============================================================================= | |
2 Copyright (c) 2001-2011 Hartmut Kaiser | |
3 | |
4 Distributed under the Boost Software License, Version 1.0. (See accompanying | |
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 ==============================================================================*/ | |
7 #if !defined(BOOST_SPIRIT_HANDLES_CONTAINER_DEC_18_2010_0920AM) | |
8 #define BOOST_SPIRIT_HANDLES_CONTAINER_DEC_18_2010_0920AM | |
9 | |
10 #if defined(_MSC_VER) | |
11 #pragma once | |
12 #endif | |
13 | |
14 #include <boost/spirit/home/support/attributes_fwd.hpp> | |
15 #include <boost/mpl/bool.hpp> | |
16 #include <boost/mpl/or.hpp> | |
17 #include <boost/mpl/not.hpp> | |
18 #include <boost/mpl/find_if.hpp> | |
19 #include <boost/type_traits/is_same.hpp> | |
20 | |
21 namespace boost { namespace spirit { namespace traits | |
22 { | |
23 // Finds out whether a component handles container attributes intrinsically | |
24 // (or whether container attributes need to be split up separately). | |
25 template <typename T, typename Attribute, typename Context | |
26 , typename Iterator, typename Enable> | |
27 struct handles_container : mpl::false_ {}; | |
28 | |
29 template <typename Subject, typename Attribute, typename Context | |
30 , typename Iterator> | |
31 struct unary_handles_container | |
32 : handles_container<Subject, Attribute, Context, Iterator> {}; | |
33 | |
34 template <typename Left, typename Right, typename Attribute | |
35 , typename Context, typename Iterator> | |
36 struct binary_handles_container | |
37 : mpl::or_< | |
38 handles_container<Left, Attribute, Context, Iterator> | |
39 , handles_container<Right, Attribute, Context, Iterator> > | |
40 {}; | |
41 | |
42 template <typename Elements, typename Attribute, typename Context | |
43 , typename Iterator> | |
44 struct nary_handles_container | |
45 : mpl::not_< | |
46 is_same< | |
47 typename mpl::find_if< | |
48 Elements, handles_container<mpl::_, Attribute | |
49 , Context, Iterator> | |
50 >::type | |
51 , typename mpl::end<Elements>::type> > | |
52 {}; | |
53 }}} | |
54 | |
55 #endif |