mirror of
https://github.com/vdemydiuk/mtapi.git
synced 2026-08-22 23:28:20 +00:00
Added thirdparty: boost library
This commit is contained in:
+66
@@ -0,0 +1,66 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2003 Joel de Guzman
|
||||
Copyright (c) 2003 Vaclav Vesely
|
||||
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)
|
||||
=============================================================================*/
|
||||
#ifndef BOOST_SPIRIT_LAZY_HPP
|
||||
#define BOOST_SPIRIT_LAZY_HPP
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/spirit/home/classic/namespace.hpp>
|
||||
#include <boost/spirit/home/classic/core/parser.hpp>
|
||||
#include <boost/spirit/home/classic/phoenix/actor.hpp>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
namespace boost { namespace spirit {
|
||||
|
||||
BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// lazy_parser, holds phoenix actor which returns a spirit parser.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template<class ActorT>
|
||||
struct lazy_parser : parser<lazy_parser<ActorT> >
|
||||
{
|
||||
typedef lazy_parser<ActorT> self_t;
|
||||
typedef typename ::phoenix::actor_result<
|
||||
ActorT, ::phoenix::tuple<> >::plain_type actor_result_t;
|
||||
|
||||
template<typename ScannerT>
|
||||
struct result
|
||||
{
|
||||
typedef typename
|
||||
parser_result<actor_result_t, ScannerT>::type
|
||||
type;
|
||||
};
|
||||
|
||||
lazy_parser(ActorT const& actor_)
|
||||
: actor(actor_) {}
|
||||
|
||||
template<typename ScannerT>
|
||||
typename parser_result<self_t, ScannerT>::type
|
||||
parse(ScannerT const& scan) const
|
||||
{ return actor().parse(scan); }
|
||||
|
||||
ActorT actor;
|
||||
};
|
||||
|
||||
//////////////////////////////
|
||||
// lazy_p, returns lazy_parser
|
||||
// Usage: lazy_p(actor)
|
||||
template<class ActorT>
|
||||
lazy_parser<ActorT> lazy_p(ActorT const& actor)
|
||||
{ return lazy_parser<ActorT>(actor); }
|
||||
|
||||
BOOST_SPIRIT_CLASSIC_NAMESPACE_END
|
||||
|
||||
}} // namespace BOOST_SPIRIT_CLASSIC_NS
|
||||
|
||||
#endif // BOOST_SPIRIT_LAZY_HPP
|
||||
Reference in New Issue
Block a user