123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*=============================================================================
- 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 <boost/spirit/home/support/context.hpp>
- ///////////////////////////////////////////////////////////////////////////////
- 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 <typename Group, typename Attributes, typename Locals>
- struct subrule_context
- : context<Attributes, Locals>
- {
- typedef context<Attributes, Locals> base_type;
- typedef Group group_type;
- subrule_context(
- Group const& group
- , typename Attributes::car_type attribute
- ) : base_type(attribute), group(group)
- {
- }
- template <typename Args, typename Context>
- 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
|