Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:52:30

0001 /*=============================================================================
0002     Copyright (c) 2009 Francois Barel
0003     Copyright (c) 2001-2010 Joel de Guzman
0004 
0005     Distributed under the Boost Software License, Version 1.0. (See accompanying
0006     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0007 ==============================================================================*/
0008 #if !defined(BOOST_SPIRIT_REPOSITORY_SUPPORT_SUBRULE_CONTEXT_AUGUST_12_2009_0539PM)
0009 #define BOOST_SPIRIT_REPOSITORY_SUPPORT_SUBRULE_CONTEXT_AUGUST_12_2009_0539PM
0010 
0011 #if defined(_MSC_VER)
0012 #pragma once
0013 #endif
0014 
0015 #include <boost/spirit/home/support/context.hpp>
0016 
0017 ///////////////////////////////////////////////////////////////////////////////
0018 namespace boost { namespace spirit { namespace repository
0019 {
0020     ///////////////////////////////////////////////////////////////////////////
0021     // subrule_context: special context used with subrules, to pass around
0022     // the current set of subrule definitions (subrule_group)
0023     ///////////////////////////////////////////////////////////////////////////
0024     template <typename Group, typename Attributes, typename Locals>
0025     struct subrule_context
0026       : context<Attributes, Locals>
0027     {
0028         typedef context<Attributes, Locals> base_type;
0029         typedef Group group_type;
0030 
0031         subrule_context(
0032             Group const& group
0033           , typename Attributes::car_type attribute
0034         ) : base_type(attribute), group(group)
0035         {
0036         }
0037 
0038         template <typename Args, typename Context>
0039         subrule_context(
0040             Group const& group
0041           , typename Attributes::car_type attribute
0042           , Args const& args
0043           , Context& caller_context
0044         ) : base_type(attribute, args, caller_context), group(group)
0045         {
0046         }
0047 
0048         subrule_context(Group const& group, Attributes const& attributes)
0049           : base_type(attributes), group(group)
0050         {
0051         }
0052 
0053         Group const& group;
0054     };
0055 }}}
0056 
0057 #endif