File indexing completed on 2025-01-18 09:53:48
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef BOOST_XPRESSIVE_DETAIL_CORE_MATCHER_MARK_BEGIN_MATCHER_HPP_EAN_10_04_2005
0009 #define BOOST_XPRESSIVE_DETAIL_CORE_MATCHER_MARK_BEGIN_MATCHER_HPP_EAN_10_04_2005
0010
0011
0012 #if defined(_MSC_VER)
0013 # pragma once
0014 #endif
0015
0016 #include <boost/xpressive/detail/detail_fwd.hpp>
0017 #include <boost/xpressive/detail/core/quant_style.hpp>
0018 #include <boost/xpressive/detail/core/state.hpp>
0019
0020 namespace boost { namespace xpressive { namespace detail
0021 {
0022
0023
0024
0025
0026 struct mark_begin_matcher
0027 : quant_style<quant_fixed_width, 0, false>
0028 {
0029 int mark_number_;
0030
0031 mark_begin_matcher(int mark_number)
0032 : mark_number_(mark_number)
0033 {
0034 }
0035
0036 template<typename BidiIter, typename Next>
0037 bool match(match_state<BidiIter> &state, Next const &next) const
0038 {
0039 sub_match_impl<BidiIter> &br = state.sub_match(this->mark_number_);
0040
0041 BidiIter old_begin = br.begin_;
0042 br.begin_ = state.cur_;
0043
0044 if(next.match(state))
0045 {
0046 return true;
0047 }
0048
0049 br.begin_ = old_begin;
0050 return false;
0051 }
0052 };
0053
0054 }}}
0055
0056 #endif