]> git.tdb.fi Git - libs/core.git/blobdiff - source/strings/regex.h
Remove deprecated things
[libs/core.git] / source / strings / regex.h
index 8226c44ae057c2b17bb63adf8198c1686015525b..67925023e544e76cd3f594addd0693d2b860d2c4 100644 (file)
@@ -1,11 +1,23 @@
 #ifndef MSP_STRINGS_REGEX_H_
 #define MSP_STRINGS_REGEX_H_
 
+#include <stdexcept>
 #include <string>
 #include "regmatch.h"
 
 namespace Msp {
 
+class bad_regex: public std::logic_error
+{
+public:
+       bad_regex(const std::string &, const std::string &, const std::string::const_iterator &);
+       virtual ~bad_regex() throw() { }
+
+private:
+       std::string make_where(const std::string &, const std::string::const_iterator &);
+};
+
+
 /**
 This class provides regular expression matching.  It supports a subset of
 POSIX.2 extended regex syntax.  Character classes, equivalence classes and
@@ -61,7 +73,7 @@ The MATCH_ANY instruction consumes the input character and always succeeds.
 class Regex
 {
 private:
-       typedef std::string Code;
+       typedef std::basic_string<unsigned char> Code;
        typedef unsigned short Count;
        typedef short Offset;
        typedef unsigned short Index;
@@ -108,7 +120,7 @@ private:
 
        Code parse_atom(const std::string &, std::string::const_iterator &i, unsigned &);
        Code parse_brackets(const std::string &, std::string::const_iterator &);
-       bool parse_repeat(std::string::const_iterator &, Count &, Count &);
+       bool parse_repeat(const std::string &, std::string::const_iterator &, Count &, Count &);
 
 public:
        /** Matches the regex against a string.  Refer to RegMatch documentation for