From 4a851cf958da6fddb474ec22b53100abe2afb26c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 27 Jun 2003 11:12:47 +0000 Subject: [PATCH] Fixed C++ Builder 5 support, Fixed support for bidirectional iterators, Fixed enum declaration in states.hpp. [SVN r18874] --- include/boost/regex/config/borland.hpp | 2 ++ include/boost/regex/v4/match_results.hpp | 4 ++-- include/boost/regex/v4/perl_matcher_non_recursive.hpp | 6 +++--- include/boost/regex/v4/perl_matcher_recursive.hpp | 6 +++--- include/boost/regex/v4/states.hpp | 3 ++- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/include/boost/regex/config/borland.hpp b/include/boost/regex/config/borland.hpp index c87e6b47..ac830226 100644 --- a/include/boost/regex/config/borland.hpp +++ b/include/boost/regex/config/borland.hpp @@ -35,6 +35,8 @@ // this is harmless for a staic link: # define _RWSTD_COMPILE_INSTANTIATE # endif + // external templates cause problems for some reason: +# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES # endif # if (__BORLANDC__ <= 0x540) && !defined(BOOST_REGEX_NO_LIB) && !defined(_NO_VCL) // C++ Builder 4 and earlier, we can't tell whether we should be using diff --git a/include/boost/regex/v4/match_results.hpp b/include/boost/regex/v4/match_results.hpp index 88fb1666..951660ea 100644 --- a/include/boost/regex/v4/match_results.hpp +++ b/include/boost/regex/v4/match_results.hpp @@ -271,8 +271,8 @@ void BOOST_REGEX_CALL match_results::maybe_assi if(base1 < base2) return; if(base2 < base1) break; - len1 = boost::re_detail::distance(p1->first, p1->second); - len2 = boost::re_detail::distance(p2->first, p2->second); + len1 = boost::re_detail::distance((RandomAccessIterator)p1->first, (RandomAccessIterator)p1->second); + len2 = boost::re_detail::distance((RandomAccessIterator)p2->first, (RandomAccessIterator)p2->second); if((len1 != len2) || ((p1->matched == false) && (p2->matched == true))) break; if((p1->matched == true) && (p2->matched == false)) diff --git a/include/boost/regex/v4/perl_matcher_non_recursive.hpp b/include/boost/regex/v4/perl_matcher_non_recursive.hpp index 7f90f362..d34e173a 100644 --- a/include/boost/regex/v4/perl_matcher_non_recursive.hpp +++ b/include/boost/regex/v4/perl_matcher_non_recursive.hpp @@ -531,7 +531,7 @@ bool perl_matcher::match_char_repea if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - end += std::min((unsigned)re_detail::distance(position, last), desired); + std::advance(end, std::min((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (traits_inst.translate(*position, icase) == what)) { @@ -592,7 +592,7 @@ bool perl_matcher::match_set_repeat if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - end += std::min((unsigned)re_detail::distance(position, last), desired); + std::advance(end, std::min((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && map[(traits_uchar_type)traits_inst.translate(*position, icase)]) { @@ -653,7 +653,7 @@ bool perl_matcher::match_long_set_r if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - end += std::min((unsigned)re_detail::distance(position, last), desired); + std::advance(end, std::min((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (position != re_is_set_member(position, last, set, re))) { diff --git a/include/boost/regex/v4/perl_matcher_recursive.hpp b/include/boost/regex/v4/perl_matcher_recursive.hpp index bef1cc42..66fed382 100644 --- a/include/boost/regex/v4/perl_matcher_recursive.hpp +++ b/include/boost/regex/v4/perl_matcher_recursive.hpp @@ -394,7 +394,7 @@ bool perl_matcher::match_char_repea if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - end += std::min((unsigned)re_detail::distance(position, last), desired); + std::advance(end, std::min((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (traits_inst.translate(*position, icase) == what)) { @@ -468,7 +468,7 @@ bool perl_matcher::match_set_repeat if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - end += std::min((unsigned)re_detail::distance(position, last), desired); + std::advance(end, std::min((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && map[(traits_uchar_type)traits_inst.translate(*position, icase)]) { @@ -542,7 +542,7 @@ bool perl_matcher::match_long_set_r if(::boost::is_random_access_iterator::value) { BidiIterator end = position; - end += std::min((unsigned)re_detail::distance(position, last), desired); + std::advance(end, std::min((unsigned)re_detail::distance(position, last), desired)); BidiIterator origin(position); while((position != end) && (position != re_is_set_member(position, last, set, re))) { diff --git a/include/boost/regex/v4/states.hpp b/include/boost/regex/v4/states.hpp index 1b0cbc1a..3cc79e84 100644 --- a/include/boost/regex/v4/states.hpp +++ b/include/boost/regex/v4/states.hpp @@ -109,7 +109,7 @@ enum syntax_element_type syntax_element_dot_rep = syntax_element_restart_continue + 1, syntax_element_char_rep = syntax_element_dot_rep + 1, syntax_element_short_set_rep = syntax_element_char_rep + 1, - syntax_element_long_set_rep = syntax_element_short_set_rep + 1, + syntax_element_long_set_rep = syntax_element_short_set_rep + 1 }; #ifdef BOOST_REGEX_DEBUG @@ -231,3 +231,4 @@ iterator BOOST_REGEX_CALL re_is_set_member(iterator next, #endif #endif +