Chris@16: /*============================================================================= Chris@16: Copyright (c) 2002-2003 Joel de Guzman Chris@16: Copyright (c) 2002-2003 Hartmut Kaiser Chris@16: http://spirit.sourceforge.net/ Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: =============================================================================*/ Chris@16: #if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_HPP) Chris@16: #define BOOST_SPIRIT_CLOSURE_CONTEXT_HPP Chris@16: Chris@16: #include Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: namespace boost { namespace spirit { Chris@16: Chris@16: BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN Chris@16: Chris@16: #if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) Chris@16: #define BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // Chris@16: // closure_context_linker Chris@16: // { helper template for the closure extendability } Chris@16: // Chris@16: // This classes can be 'overloaded' (defined elsewhere), to plug Chris@16: // in additional functionality into the closure parsing process. Chris@16: // Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: Chris@16: template Chris@16: struct closure_context_linker : public ContextT Chris@16: { Chris@16: template Chris@16: closure_context_linker(ParserT const& p) Chris@16: : ContextT(p) {} Chris@16: Chris@16: template Chris@16: void pre_parse(ParserT const& p, ScannerT const& scan) Chris@16: { ContextT::pre_parse(p, scan); } Chris@16: Chris@16: template Chris@16: ResultT& Chris@16: post_parse(ResultT& hit, ParserT const& p, ScannerT const& scan) Chris@16: { return ContextT::post_parse(hit, p, scan); } Chris@16: }; Chris@16: Chris@16: #endif // !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: BOOST_SPIRIT_CLASSIC_NAMESPACE_END Chris@16: Chris@16: }} // namespace BOOST_SPIRIT_CLASSIC_NS Chris@16: Chris@16: #endif // BOOST_SPIRIT_CLOSURE_CONTEXT_HPP