13 const std::string::const_iterator begin,
14 const std::string::const_iterator &end)
21 : valid_(other.valid_) {
23 SubPatterns::const_iterator i = other.
subpatterns_.begin();
24 const SubPatterns::const_iterator iend = other.
subpatterns_.end();
25 for (; i != iend; ++i) {
36 SubPatterns::const_iterator i = other.
subpatterns_.begin();
37 const SubPatterns::const_iterator iend = other.
subpatterns_.end();
38 for (; i != iend; ++i) {
49 const SubPatterns::const_iterator iend =
subpatterns_.end();
50 for (; i != iend; ++i) {
58 const std::string::const_iterator &end) {
59 std::string::const_iterator i = begin;
74 const std::string::const_iterator &end, std::string::const_iterator *i) {
76 bool next_is_escaped =
false;
84 next_is_escaped =
true;
85 }
else if (next_is_escaped) {
88 next_is_escaped =
false;
104 const std::string::const_iterator &end, std::string::const_iterator *i) {
106 const char chr = **i;
115 assert(
false &&
"unrecognized special character");
120 const bool is_relaxed)
const {
123 const SubPatterns::const_iterator iend =
subpatterns_.end();
124 for (; i != iend; ++i) {
125 result += (*i)->GenerateRegularExpression(is_relaxed);
133 const SubPatterns::const_iterator iend =
subpatterns_.end();
134 for (; i != iend; ++i) {
135 result += (*i)->GenerateGlobString();
148 const SubPatterns::const_iterator iend =
subpatterns_.end();
149 SubPatterns::const_iterator j = other.
subpatterns_.begin();
150 const SubPatterns::const_iterator jend = other.
subpatterns_.end();
152 for (; i != iend && j != jend; ++i, ++j) {
153 if (!(*i)->Compare(*j)) {
171 const bool is_relaxed)
const {
173 std::string::const_iterator i = chars_.begin();
174 const std::string::const_iterator iend = chars_.end();
176 for (; i != iend; ++i) {
177 if (IsSpecialRegexCharacter(*i)) {
188 std::string::const_iterator i = chars_.begin();
189 const std::string::const_iterator iend = chars_.end();
190 std::string glob_string;
191 for (; i != iend; ++i) {
201 const char chr)
const {
202 return (chr ==
'.' || chr ==
'\\' || chr ==
'*' || chr ==
'?' || chr ==
'['
203 || chr ==
']' || chr ==
'(' || chr ==
')' || chr ==
'{' || chr ==
'}'
204 || chr ==
'^' || chr ==
'$' || chr ==
'+');
216 return chars_ == pt_other->
chars_;
222 const bool is_relaxed)
const {
223 return (is_relaxed) ? std::string(
".*")
242 const bool is_relaxed)
const {
PathspecElementPattern(const std::string::const_iterator begin, const std::string::const_iterator &end)
bool Compare(const SubPattern *other) const
void Parse(const std::string::const_iterator &begin, const std::string::const_iterator &end)
bool IsSpecialRegexCharacter(const char chr) const
virtual bool IsPlaceholder() const
std::string GenerateRegularExpression(const bool is_relaxed) const
assert((mem||(size==0))&&"Out Of Memory")
~PathspecElementPattern()
static bool IsSpecialChar(const char chr)
std::string GenerateGlobString() const
bool operator==(const PathspecElementPattern &other) const
void AddChar(const char chr)
SubPattern * ParsePlaintext(const std::string::const_iterator &end, std::string::const_iterator *i)
std::string GenerateGlobString() const
static const char kEscaper
std::string GenerateGlobString() const
bool Compare(const SubPattern *other) const
std::string GenerateGlobString() const
PathspecElementPattern & operator=(const PathspecElementPattern &other)
std::string GenerateRegularExpression(const bool is_relaxed=false) const
static const char kSeparator
std::string GenerateRegularExpression(const bool is_relaxed) const
static const char kWildcard
virtual bool IsPlaintext() const
std::string GenerateRegularExpression(const bool is_relaxed) const
bool Compare(const SubPattern *other) const
SubPattern * ParseSpecialChar(const std::string::const_iterator &end, std::string::const_iterator *i)
virtual bool IsWildcard() const
static const char kPlaceholder
virtual bool IsEmpty() const