/*============================================================================= Copyright (c) 2009 Francois Barel Copyright (c) 2001-2010 Joel de Guzman 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_REPOSITORY_SUPPORT_SUBRULE_CONTEXT_AUGUST_12_2009_0539PM) #define BOOST_SPIRIT_REPOSITORY_SUPPORT_SUBRULE_CONTEXT_AUGUST_12_2009_0539PM #if defined(_MSC_VER) #pragma once #endif #include /////////////////////////////////////////////////////////////////////////////// namespace boost { namespace spirit { namespace repository { /////////////////////////////////////////////////////////////////////////// // subrule_context: special context used with subrules, to pass around // the current set of subrule definitions (subrule_group) /////////////////////////////////////////////////////////////////////////// template struct subrule_context : context { typedef context base_type; typedef Group group_type; subrule_context( Group const& group , typename Attributes::car_type attribute ) : base_type(attribute), group(group) { } template subrule_context( Group const& group , typename Attributes::car_type attribute , Args const& args , Context& caller_context ) : base_type(attribute, args, caller_context), group(group) { } subrule_context(Group const& group, Attributes const& attributes) : base_type(attributes), group(group) { } Group const& group; }; }}} #endif