Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/spirit/home/x3/directive/raw.hpp @ 133:4acb5d8d80b6 tip
Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author | Chris Cannam |
---|---|
date | Tue, 30 Jul 2019 12:25:44 +0100 |
parents | f46d142149f5 |
children |
line wrap: on
line source
/*============================================================================= Copyright (c) 2014 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(SPIRIT_X3_RAW_APRIL_9_2007_0912AM) #define SPIRIT_X3_RAW_APRIL_9_2007_0912AM #include <boost/spirit/home/x3/core/skip_over.hpp> #include <boost/spirit/home/x3/core/parser.hpp> #include <boost/spirit/home/x3/support/traits/move_to.hpp> #include <boost/range/iterator_range.hpp> namespace boost { namespace spirit { namespace x3 { // this is a pseudo attribute type indicating that the parser wants the // iterator range pointing to the [first, last) matching characters from // the input iterators. struct raw_attribute_type {}; template <typename Subject> struct raw_directive : unary_parser<Subject, raw_directive<Subject>> { typedef unary_parser<Subject, raw_directive<Subject> > base_type; typedef raw_attribute_type attribute_type; static bool const handles_container = Subject::handles_container; typedef Subject subject_type; raw_directive(Subject const& subject) : base_type(subject) {} template <typename Iterator, typename Context , typename RContext, typename Attribute> bool parse(Iterator& first, Iterator const& last , Context const& context, RContext& rcontext, Attribute& attr) const { x3::skip_over(first, last, context); Iterator i = first; if (this->subject.parse(i, last, context, rcontext, unused)) { traits::move_to(first, i, attr); first = i; return true; } return false; } template <typename Iterator, typename Context, typename RContext> bool parse(Iterator& first, Iterator const& last , Context const& context, RContext& rcontext, unused_type) const { return this->subject.parse(first, last, context, rcontext, unused); } }; struct raw_gen { template <typename Subject> raw_directive<typename extension::as_parser<Subject>::value_type> operator[](Subject const& subject) const { return {as_parser(subject)}; } }; raw_gen const raw = raw_gen(); }}} #endif