X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fregex.h;h=125befcf1ae8850c8dd08bf50cd1098fc56d2cb3;hb=22d52f5f08cba82c85019634420f4204da56ec6b;hp=0c85075882ba2e3f10ef5c5b169e821f2037161d;hpb=af928c503de3dbed4575bc26f0b2894a1d7b7eb7;p=lyx.git diff --git a/src/support/regex.h b/src/support/regex.h index 0c85075882..125befcf1a 100644 --- a/src/support/regex.h +++ b/src/support/regex.h @@ -16,6 +16,46 @@ # ifdef _MSC_VER # include # define match_partial _Match_partial +namespace lyx { + // inheriting 'private' to see which functions are used and if there are + // other ECMAScrip defaults + class regex : private std::tr1::regex + { + public: + regex() {} + regex(const regex& rhs) : std::tr1::regex(rhs) {} + template + regex(T t) : std::tr1::regex(t, std::tr1::regex_constants::grep) {} + template + void assign(T t) { std::tr1::regex::assign(t, std::tr1::regex_constants::grep); } + template + void assign(T t, V v) { std::tr1::regex::assign(t, v); } + const std::tr1::regex& toTr1() const { return *this; } + }; + template + bool regex_match(T t, const regex& r) { return std::tr1::regex_match(t, r.toTr1()); } + template + bool regex_match(T t, V v, const regex& r) { return std::tr1::regex_match(t, v, r.toTr1()); } + template + bool regex_match(T t, V v, H h, const regex& r, U u) { return std::tr1::regex_match(t, v, h, r.toTr1(), u); } + template + std::string regex_replace(T t, const regex& r, V v) { return std::tr1::regex_replace(t, r.toTr1(), v); } + //template + //std::string regex_replace(T t, V v, U u, const regex& r, H h) { return std::tr1::regex_replace(t, v, u, r.toTr1(), h); } + template + bool regex_search(T t, const regex& r) { return std::tr1::regex_search(t, r.toTr1()); } + template + bool regex_search(T t, V v, const regex& r) { return std::tr1::regex_search(t, v, r.toTr1()); } + template + bool regex_search(T t, V v, U u, const regex& r) { return std::tr1::regex_search(t, v, u, r.toTr1()); } + + struct sregex_iterator : std::tr1::sregex_iterator + { + sregex_iterator() {} + template + sregex_iterator(T t, V v, const regex& r) : std::tr1::sregex_iterator(t, v, r.toTr1()) {} + }; +} # else # include // TODO no match_partial in gcc, how to replace? @@ -25,16 +65,19 @@ #else # include # define LR_NS boost +namespace lyx { +using LR_NS::regex; +using LR_NS::regex_match; +using LR_NS::sregex_iterator; +} #endif namespace lyx { -using LR_NS::regex; -using LR_NS::smatch; +using LR_NS::smatch; using LR_NS::regex_replace; -using LR_NS::basic_regex; -using LR_NS::regex_error; +using LR_NS::basic_regex; +using LR_NS::regex_error; using LR_NS::regex_search; -using LR_NS::sregex_iterator; using LR_NS::match_results; namespace regex_constants