Mercurial > hg > vamp-build-and-test
view 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 |
line wrap: on
line source
/*============================================================================= Copyright (c) 2001-2014 Joel de Guzman Copyright (c) 2013 Agustín Bergé http://spirit.sourceforge.net/ 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) =============================================================================*/ #if !defined(BOOST_SPIRIT_X3_SUBCONTEXT_APR_15_2013_0840AM) #define BOOST_SPIRIT_X3_SUBCONTEXT_APR_15_2013_0840AM #if defined(_MSC_VER) #pragma once #endif #include <boost/fusion/support/pair.hpp> #include <boost/spirit/home/x3/support/context.hpp> #include <boost/spirit/home/x3/support/unused.hpp> namespace boost { namespace spirit { namespace x3 { template <typename... T> struct subcontext; template <> struct subcontext<> { template <typename Context> subcontext(Context const& /*context*/) {} template <typename ID_, typename Unused = void> struct get_result { typedef unused_type type; }; template <typename ID_> unused_type get(ID_) const { return unused; } }; template <typename T> struct subcontext<T> : context<typename T::first_type, typename T::second_type> { typedef context< typename T::first_type, typename T::second_type > context_type; template <typename Context> subcontext(Context const& context) : context_type(x3::get<typename T::first_type>(context)) {} using context_type::get; }; template <typename T, typename... Tail> struct subcontext<T, Tail...> : subcontext<Tail...> , context< typename T::first_type, typename T::second_type , subcontext<Tail...> > { typedef subcontext<Tail...> base_type; typedef context< typename T::first_type, typename T::second_type , base_type > context_type; template <typename Context> subcontext(Context const& context) : base_type(context) , context_type( x3::get<typename T::first_type>(context) , *static_cast<base_type*>(this)) {} using context_type::get; }; }}} #endif