-/* $Id$
-
-This file is part of libmspstrings
-Copyright © 2007 Mikko Rasa
-Distributed under the LGPL
-*/
-
#ifndef MSP_STRINGS_REGMATCH_H_
#define MSP_STRINGS_REGMATCH_H_
*/
struct Group
{
- bool match; //< Whether or not this group matched
- unsigned begin; //< First offset of the match
- unsigned end; //< One-past-last offset
- unsigned length; //< Length of the match (end-begin)
- std::string str; //< The part of the string that matched
-
- Group(): match(false) { }
- operator bool() const { return match; }
- };
+ typedef std::string::size_type size_type;
+
+ bool match = false; //< Whether or not this group matched
+ size_type begin; //< First offset of the match
+ size_type end; //< One-past-last offset
+ size_type length; //< Length of the match (end-begin)
+ std::string str; //< The part of the string that matched
- typedef std::vector<Group> GroupArray;
+ explicit operator bool() const { return match; }
+ };
private:
- GroupArray groups;
+ std::vector<Group> groups;
public:
/** Constructs a RegMatch representing a non-match. */
- RegMatch() { }
+ RegMatch() = default;
/** Constructs a new RegMatch from a string and groups. The length and str
members of each group are computed and need not be set. Intended to be used
/** Shorthand for the group() function. */
const Group &operator[](unsigned i) const { return group(i); }
- operator bool() const { return !empty(); }
+ explicit operator bool() const { return !empty(); }
};
} // namespace Msp