annotate DEPENDENCIES/generic/include/boost/spirit/home/x3/support/subcontext.hpp @ 118:770eb830ec19 emscripten

Typo fix
author Chris Cannam
date Wed, 18 May 2016 16:14:08 +0100
parents f46d142149f5
children
rev   line source
Chris@102 1 /*=============================================================================
Chris@102 2 Copyright (c) 2001-2014 Joel de Guzman
Chris@102 3 Copyright (c) 2013 Agustín Bergé
Chris@102 4 http://spirit.sourceforge.net/
Chris@102 5
Chris@102 6 Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@102 7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@102 8 =============================================================================*/
Chris@102 9 #if !defined(BOOST_SPIRIT_X3_SUBCONTEXT_APR_15_2013_0840AM)
Chris@102 10 #define BOOST_SPIRIT_X3_SUBCONTEXT_APR_15_2013_0840AM
Chris@102 11
Chris@102 12 #if defined(_MSC_VER)
Chris@102 13 #pragma once
Chris@102 14 #endif
Chris@102 15
Chris@102 16 #include <boost/fusion/support/pair.hpp>
Chris@102 17 #include <boost/spirit/home/x3/support/context.hpp>
Chris@102 18 #include <boost/spirit/home/x3/support/unused.hpp>
Chris@102 19
Chris@102 20 namespace boost { namespace spirit { namespace x3
Chris@102 21 {
Chris@102 22 template <typename... T>
Chris@102 23 struct subcontext;
Chris@102 24
Chris@102 25 template <>
Chris@102 26 struct subcontext<>
Chris@102 27 {
Chris@102 28 template <typename Context>
Chris@102 29 subcontext(Context const& /*context*/)
Chris@102 30 {}
Chris@102 31
Chris@102 32 template <typename ID_, typename Unused = void>
Chris@102 33 struct get_result
Chris@102 34 {
Chris@102 35 typedef unused_type type;
Chris@102 36 };
Chris@102 37
Chris@102 38 template <typename ID_>
Chris@102 39 unused_type
Chris@102 40 get(ID_) const
Chris@102 41 {
Chris@102 42 return unused;
Chris@102 43 }
Chris@102 44 };
Chris@102 45
Chris@102 46 template <typename T>
Chris@102 47 struct subcontext<T>
Chris@102 48 : context<typename T::first_type, typename T::second_type>
Chris@102 49 {
Chris@102 50 typedef context<
Chris@102 51 typename T::first_type, typename T::second_type
Chris@102 52 > context_type;
Chris@102 53
Chris@102 54 template <typename Context>
Chris@102 55 subcontext(Context const& context)
Chris@102 56 : context_type(x3::get<typename T::first_type>(context))
Chris@102 57 {}
Chris@102 58
Chris@102 59 using context_type::get;
Chris@102 60 };
Chris@102 61
Chris@102 62 template <typename T, typename... Tail>
Chris@102 63 struct subcontext<T, Tail...>
Chris@102 64 : subcontext<Tail...>
Chris@102 65 , context<
Chris@102 66 typename T::first_type, typename T::second_type
Chris@102 67 , subcontext<Tail...>
Chris@102 68 >
Chris@102 69 {
Chris@102 70 typedef subcontext<Tail...> base_type;
Chris@102 71 typedef context<
Chris@102 72 typename T::first_type, typename T::second_type
Chris@102 73 , base_type
Chris@102 74 > context_type;
Chris@102 75
Chris@102 76 template <typename Context>
Chris@102 77 subcontext(Context const& context)
Chris@102 78 : base_type(context)
Chris@102 79 , context_type(
Chris@102 80 x3::get<typename T::first_type>(context)
Chris@102 81 , *static_cast<base_type*>(this))
Chris@102 82 {}
Chris@102 83
Chris@102 84 using context_type::get;
Chris@102 85 };
Chris@102 86
Chris@102 87 }}}
Chris@102 88
Chris@102 89 #endif