diff options
author | Andrzej Rybczak <electricityispower@gmail.com> | 2012-08-31 23:09:56 +0200 |
---|---|---|
committer | Andrzej Rybczak <electricityispower@gmail.com> | 2012-08-31 23:09:56 +0200 |
commit | 4c944085d62e566fd3c99b053907d8d8b08790b8 (patch) | |
tree | 1265dfb218794902ac085998127bb315b15c7976 /src/regexes.h | |
parent | f1625c920ae900466b84bf1ca36cf3a5f5979aef (diff) |
menu: generalize filtering, introduce interfaces
Diffstat (limited to 'src/regexes.h')
-rw-r--r-- | src/regexes.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/regexes.h b/src/regexes.h new file mode 100644 index 00000000..bca86ca8 --- /dev/null +++ b/src/regexes.h @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright (C) 2008-2012 by Andrzej Rybczak * + * electricityispower@gmail.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _REGEXES_H +#define _REGEXES_H + +#include <regex.h> +#include <string> + +struct Regex +{ + Regex(); + Regex(const std::string ®ex, int cflags); + Regex(const Regex &rhs); + virtual ~Regex(); + + /// @return regular expression + const std::string ®ex() const { return m_regex; } + + /// @return compilation error (if there was any) + const std::string &error() const { return m_error; } + + /// compiles regular expression + /// @result true if compilation was successful, false otherwise + bool compile(); + + /// compiles regular expression + /// @result true if compilation was successful, false otherwise + bool compile(const std::string ®ex, int cflags); + + /// tries to match compiled regex with given string + /// @return true if string was matched, false otherwise + bool match(const std::string &s) const; + + Regex &operator=(const Regex &rhs); + +private: + std::string m_regex; + std::string m_error; + regex_t m_rx; + int m_cflags; + bool m_compiled; +}; + +#endif // _REGEXES_H
\ No newline at end of file |