/*============================================================================= | |
Copyright (c) 2002-2003 Joel de Guzman | |
Copyright (c) 2002-2003 Hartmut Kaiser | |
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_CLOSURE_CONTEXT_HPP) | |
#define BOOST_SPIRIT_CLOSURE_CONTEXT_HPP | |
#include <boost/spirit/home/classic/namespace.hpp> | |
/////////////////////////////////////////////////////////////////////////////// | |
namespace boost { namespace spirit { | |
BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN | |
#if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) | |
#define BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED | |
/////////////////////////////////////////////////////////////////////////////// | |
// | |
// closure_context_linker | |
// { helper template for the closure extendability } | |
// | |
// This classes can be 'overloaded' (defined elsewhere), to plug | |
// in additional functionality into the closure parsing process. | |
// | |
/////////////////////////////////////////////////////////////////////////////// | |
template<typename ContextT> | |
struct closure_context_linker : public ContextT | |
{ | |
template <typename ParserT> | |
closure_context_linker(ParserT const& p) | |
: ContextT(p) {} | |
template <typename ParserT, typename ScannerT> | |
void pre_parse(ParserT const& p, ScannerT const& scan) | |
{ ContextT::pre_parse(p, scan); } | |
template <typename ResultT, typename ParserT, typename ScannerT> | |
ResultT& | |
post_parse(ResultT& hit, ParserT const& p, ScannerT const& scan) | |
{ return ContextT::post_parse(hit, p, scan); } | |
}; | |
#endif // !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) | |
/////////////////////////////////////////////////////////////////////////////// | |
BOOST_SPIRIT_CLASSIC_NAMESPACE_END | |
}} // namespace BOOST_SPIRIT_CLASSIC_NS | |
#endif // BOOST_SPIRIT_CLOSURE_CONTEXT_HPP |