diff options
author | Attila Molnar <attilamolnar@hush.com> | 2013-08-27 05:28:15 -0700 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2013-08-27 05:28:15 -0700 |
commit | 620e818578a5e0dbebd07fb27a571d5392c66c24 (patch) | |
tree | 6d20eef5fd9b98fecd93df2caf197ad08c168562 /src | |
parent | d9d9cbe025f94523265daa72de7596467d71f5c8 (diff) | |
parent | eaf658de3d1ef984c9a0b4273a9cfbd3029f8b5b (diff) |
Merge pull request #619 from SaberUK/master+regex-dedupe
Various regex module improvements.
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/extra/m_regex_pcre.cpp | 22 | ||||
-rw-r--r-- | src/modules/extra/m_regex_posix.cpp | 22 | ||||
-rw-r--r-- | src/modules/extra/m_regex_re2.cpp | 15 | ||||
-rw-r--r-- | src/modules/extra/m_regex_stdlib.cpp | 15 | ||||
-rw-r--r-- | src/modules/extra/m_regex_tre.cpp | 22 | ||||
-rw-r--r-- | src/modules/m_regex_glob.cpp | 4 |
6 files changed, 20 insertions, 80 deletions
diff --git a/src/modules/extra/m_regex_pcre.cpp b/src/modules/extra/m_regex_pcre.cpp index 04b9da0ab..91c2d1404 100644 --- a/src/modules/extra/m_regex_pcre.cpp +++ b/src/modules/extra/m_regex_pcre.cpp @@ -29,15 +29,6 @@ # pragma comment(lib, "libpcre.lib") #endif -class PCREException : public ModuleException -{ - public: - PCREException(const std::string& rx, const std::string& error, int erroffset) - : ModuleException("Error in regex " + rx + " at offset " + ConvToStr(erroffset) + ": " + error) - { - } -}; - class PCRERegex : public Regex { pcre* regex; @@ -51,7 +42,7 @@ class PCRERegex : public Regex if (!regex) { ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "pcre_compile failed: /%s/ [%d] %s", rx.c_str(), erroffset, error); - throw PCREException(rx, error, erroffset); + throw RegexException(rx, error, erroffset); } } @@ -60,14 +51,9 @@ class PCRERegex : public Regex pcre_free(regex); } - bool Matches(const std::string& text) + bool Matches(const std::string& text) CXX11_OVERRIDE { - if (pcre_exec(regex, NULL, text.c_str(), text.length(), 0, 0, NULL, 0) > -1) - { - // Bang. :D - return true; - } - return false; + return (pcre_exec(regex, NULL, text.c_str(), text.length(), 0, 0, NULL, 0) >= 0); } }; @@ -75,7 +61,7 @@ class PCREFactory : public RegexFactory { public: PCREFactory(Module* m) : RegexFactory(m, "regex/pcre") {} - Regex* Create(const std::string& expr) + Regex* Create(const std::string& expr) CXX11_OVERRIDE { return new PCRERegex(expr); } diff --git a/src/modules/extra/m_regex_posix.cpp b/src/modules/extra/m_regex_posix.cpp index ab9fe68ff..935cdbf92 100644 --- a/src/modules/extra/m_regex_posix.cpp +++ b/src/modules/extra/m_regex_posix.cpp @@ -23,15 +23,6 @@ #include <sys/types.h> #include <regex.h> -class POSIXRegexException : public ModuleException -{ - public: - POSIXRegexException(const std::string& rx, const std::string& error) - : ModuleException("Error in regex " + rx + ": " + error) - { - } -}; - class POSIXRegex : public Regex { regex_t regbuf; @@ -54,7 +45,7 @@ class POSIXRegex : public Regex error = errbuf; delete[] errbuf; regfree(®buf); - throw POSIXRegexException(rx, error); + throw RegexException(rx, error); } } @@ -63,14 +54,9 @@ class POSIXRegex : public Regex regfree(®buf); } - bool Matches(const std::string& text) + bool Matches(const std::string& text) CXX11_OVERRIDE { - if (regexec(®buf, text.c_str(), 0, NULL, 0) == 0) - { - // Bang. :D - return true; - } - return false; + return (regexec(®buf, text.c_str(), 0, NULL, 0) == 0); } }; @@ -79,7 +65,7 @@ class PosixFactory : public RegexFactory public: bool extended; PosixFactory(Module* m) : RegexFactory(m, "regex/posix") {} - Regex* Create(const std::string& expr) + Regex* Create(const std::string& expr) CXX11_OVERRIDE { return new POSIXRegex(expr, extended); } diff --git a/src/modules/extra/m_regex_re2.cpp b/src/modules/extra/m_regex_re2.cpp index 56d80cd68..2525b70ab 100644 --- a/src/modules/extra/m_regex_re2.cpp +++ b/src/modules/extra/m_regex_re2.cpp @@ -30,15 +30,6 @@ /* $CompileFlags: -std=c++11 */ /* $LinkerFlags: -lre2 */ -class RE2Exception : public ModuleException -{ - public: - RE2Exception(const std::string& rx, const std::string& error) - : ModuleException(std::string("Error in regex ") + rx + ": " + error) - { - } -}; - class RE2Regex : public Regex { RE2 regexcl; @@ -48,11 +39,11 @@ class RE2Regex : public Regex { if (!regexcl.ok()) { - throw RE2Exception(rx, regexcl.error()); + throw RegexException(rx, regexcl.error()); } } - bool Matches(const std::string& text) + bool Matches(const std::string& text) CXX11_OVERRIDE { return RE2::FullMatch(text, regexcl); } @@ -62,7 +53,7 @@ class RE2Factory : public RegexFactory { public: RE2Factory(Module* m) : RegexFactory(m, "regex/re2") { } - Regex* Create(const std::string& expr) + Regex* Create(const std::string& expr) CXX11_OVERRIDE { return new RE2Regex(expr); } diff --git a/src/modules/extra/m_regex_stdlib.cpp b/src/modules/extra/m_regex_stdlib.cpp index d69f739ec..5ec358d58 100644 --- a/src/modules/extra/m_regex_stdlib.cpp +++ b/src/modules/extra/m_regex_stdlib.cpp @@ -22,15 +22,6 @@ /* $CompileFlags: -std=c++11 */ -class StdRegexException : public ModuleException -{ - public: - StdRegexException(const std::string& rx, const std::string& error) - : ModuleException(std::string("Error in regex ") + rx + ": " + error) - { - } -}; - class StdRegex : public Regex { std::regex regexcl; @@ -43,11 +34,11 @@ class StdRegex : public Regex } catch(std::regex_error rxerr) { - throw StdRegexException(rx, rxerr.what()); + throw RegexException(rx, rxerr.what()); } } - bool Matches(const std::string& text) + bool Matches(const std::string& text) CXX11_OVERRIDE { return std::regex_search(text, regexcl); } @@ -58,7 +49,7 @@ class StdRegexFactory : public RegexFactory public: std::regex::flag_type regextype; StdRegexFactory(Module* m) : RegexFactory(m, "regex/stdregex") {} - Regex* Create(const std::string& expr) + Regex* Create(const std::string& expr) CXX11_OVERRIDE { return new StdRegex(expr, regextype); } diff --git a/src/modules/extra/m_regex_tre.cpp b/src/modules/extra/m_regex_tre.cpp index cc70f187d..92f2ad990 100644 --- a/src/modules/extra/m_regex_tre.cpp +++ b/src/modules/extra/m_regex_tre.cpp @@ -26,15 +26,6 @@ /* $CompileFlags: pkgconfincludes("tre","tre/regex.h","") */ /* $LinkerFlags: pkgconflibs("tre","/libtre.so","-ltre") rpath("pkg-config --libs tre") */ -class TRERegexException : public ModuleException -{ - public: - TRERegexException(const std::string& rx, const std::string& error) - : ModuleException("Error in regex " + rx + ": " + error) - { - } -}; - class TRERegex : public Regex { regex_t regbuf; @@ -57,7 +48,7 @@ public: error = errbuf; delete[] errbuf; regfree(®buf); - throw TRERegexException(rx, error); + throw RegexException(rx, error); } } @@ -66,14 +57,9 @@ public: regfree(®buf); } - bool Matches(const std::string& text) + bool Matches(const std::string& text) CXX11_OVERRIDE { - if (regexec(®buf, text.c_str(), 0, NULL, 0) == 0) - { - // Bang. :D - return true; - } - return false; + return (regexec(®buf, text.c_str(), 0, NULL, 0) == 0); } }; @@ -81,7 +67,7 @@ class TREFactory : public RegexFactory { public: TREFactory(Module* m) : RegexFactory(m, "regex/tre") {} - Regex* Create(const std::string& expr) + Regex* Create(const std::string& expr) CXX11_OVERRIDE { return new TRERegex(expr); } diff --git a/src/modules/m_regex_glob.cpp b/src/modules/m_regex_glob.cpp index 887b1cd79..eb7cf4ece 100644 --- a/src/modules/m_regex_glob.cpp +++ b/src/modules/m_regex_glob.cpp @@ -28,7 +28,7 @@ public: { } - bool Matches(const std::string& text) + bool Matches(const std::string& text) CXX11_OVERRIDE { return InspIRCd::Match(text, this->regex_string); } @@ -37,7 +37,7 @@ public: class GlobFactory : public RegexFactory { public: - Regex* Create(const std::string& expr) + Regex* Create(const std::string& expr) CXX11_OVERRIDE { return new GlobRegex(expr); } |