diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-11-24 20:33:19 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-11-24 20:35:17 (GMT) |
commit | 332d60c56dfaa11fdd135088279d15cd5983b3d4 (patch) | |
tree | dd77717a4e1732da929d5ff8a0471fa3f005e201 /3rdParty/Boost/src/boost/regex/v4/perl_matcher_non_recursive.hpp | |
parent | 90c44a10fec26d2a0935b2d62e82b6a5be028373 (diff) | |
download | swift-contrib-332d60c56dfaa11fdd135088279d15cd5983b3d4.zip swift-contrib-332d60c56dfaa11fdd135088279d15cd5983b3d4.tar.bz2 |
Upgraded Boost to 1.45.0.
Diffstat (limited to '3rdParty/Boost/src/boost/regex/v4/perl_matcher_non_recursive.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/regex/v4/perl_matcher_non_recursive.hpp | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/3rdParty/Boost/src/boost/regex/v4/perl_matcher_non_recursive.hpp b/3rdParty/Boost/src/boost/regex/v4/perl_matcher_non_recursive.hpp index 0fcd454..7ab6781 100644 --- a/3rdParty/Boost/src/boost/regex/v4/perl_matcher_non_recursive.hpp +++ b/3rdParty/Boost/src/boost/regex/v4/perl_matcher_non_recursive.hpp @@ -130,8 +130,8 @@ struct saved_single_repeat : public saved_state template <class Results> struct saved_recursion : public saved_state { - saved_recursion(int id, const re_syntax_base* p, Results* pr) - : saved_state(14), recursion_id(id), preturn_address(p), results(*pr) + saved_recursion(int idx, const re_syntax_base* p, Results* pr) + : saved_state(14), recursion_id(idx), preturn_address(p), results(*pr) {} int recursion_id; const re_syntax_base* preturn_address; @@ -329,7 +329,7 @@ inline void perl_matcher<BidiIterator, Allocator, traits>::push_single_repeat(st } template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int id, const re_syntax_base* p, results_type* presults) +inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int idx, const re_syntax_base* p, results_type* presults) { saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state); --pmp; @@ -339,7 +339,7 @@ inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion(int id pmp = static_cast<saved_recursion<results_type>*>(m_backup_state); --pmp; } - (void) new (pmp)saved_recursion<results_type>(id, p, presults); + (void) new (pmp)saved_recursion<results_type>(idx, p, presults); m_backup_state = pmp; } @@ -898,20 +898,19 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_recursion() // // Set new call stack: // - if(recursion_stack_position >= static_cast<int>(sizeof(recursion_stack)/sizeof(recursion_stack[0]))) + if(recursion_stack.capacity() == 0) { - return false; + recursion_stack.reserve(50); } - recursion_stack[recursion_stack_position].preturn_address = pstate->next.p; - recursion_stack[recursion_stack_position].results = *m_presult; + recursion_stack.push_back(recursion_info<results_type>()); + recursion_stack.back().preturn_address = pstate->next.p; + recursion_stack.back().results = *m_presult; if(static_cast<const re_recurse*>(pstate)->state_id > 0) { push_repeater_count(static_cast<const re_recurse*>(pstate)->state_id, &next_count); } pstate = static_cast<const re_jump*>(pstate)->alt.p; - recursion_stack[recursion_stack_position].id = static_cast<const re_brace*>(pstate)->index; - ++recursion_stack_position; - //BOOST_ASSERT(recursion_stack[recursion_stack_position-1].id); + recursion_stack.back().idx = static_cast<const re_brace*>(pstate)->index; return true; } @@ -927,14 +926,14 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark() { m_presult->set_second(position, index); } - if(recursion_stack_position) + if(!recursion_stack.empty()) { - if(index == recursion_stack[recursion_stack_position-1].id) + if(index == recursion_stack.back().idx) { - --recursion_stack_position; - pstate = recursion_stack[recursion_stack_position].preturn_address; - *m_presult = recursion_stack[recursion_stack_position].results; - push_recursion(recursion_stack[recursion_stack_position].id, recursion_stack[recursion_stack_position].preturn_address, &recursion_stack[recursion_stack_position].results); + pstate = recursion_stack.back().preturn_address; + *m_presult = recursion_stack.back().results; + push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, &recursion_stack.back().results); + recursion_stack.pop_back(); } } } @@ -951,13 +950,13 @@ bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark() template <class BidiIterator, class Allocator, class traits> bool perl_matcher<BidiIterator, Allocator, traits>::match_match() { - if(recursion_stack_position) + if(!recursion_stack.empty()) { - BOOST_ASSERT(0 == recursion_stack[recursion_stack_position-1].id); - --recursion_stack_position; - pstate = recursion_stack[recursion_stack_position].preturn_address; - *m_presult = recursion_stack[recursion_stack_position].results; - push_recursion(recursion_stack[recursion_stack_position].id, recursion_stack[recursion_stack_position].preturn_address, &recursion_stack[recursion_stack_position].results); + BOOST_ASSERT(0 == recursion_stack.back().idx); + pstate = recursion_stack.back().preturn_address; + *m_presult = recursion_stack.back().results; + push_recursion(recursion_stack.back().idx, recursion_stack.back().preturn_address, &recursion_stack.back().results); + recursion_stack.pop_back(); return true; } if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first)) @@ -1523,10 +1522,10 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion(bool r) saved_recursion<results_type>* pmp = static_cast<saved_recursion<results_type>*>(m_backup_state); if(!r) { - recursion_stack[recursion_stack_position].id = pmp->recursion_id; - recursion_stack[recursion_stack_position].preturn_address = pmp->preturn_address; - recursion_stack[recursion_stack_position].results = pmp->results; - ++recursion_stack_position; + recursion_stack.push_back(recursion_info<results_type>()); + recursion_stack.back().idx = pmp->recursion_id; + recursion_stack.back().preturn_address = pmp->preturn_address; + recursion_stack.back().results = pmp->results; } boost::re_detail::inplace_destroy(pmp++); m_backup_state = pmp; @@ -1539,7 +1538,7 @@ bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_pop(bool r) saved_state* pmp = static_cast<saved_state*>(m_backup_state); if(!r) { - --recursion_stack_position; + recursion_stack.pop_back(); } boost::re_detail::inplace_destroy(pmp++); m_backup_state = pmp; |