Added validation code for mask_t objects.
This commit is contained in:
parent
eaac95147c
commit
dc68903bb2
3 changed files with 14 additions and 0 deletions
|
|
@ -42,6 +42,7 @@ mask_t::mask_t(const string& pat) : expr()
|
||||||
mask_t& mask_t::operator=(const string& pat)
|
mask_t& mask_t::operator=(const string& pat)
|
||||||
{
|
{
|
||||||
expr.assign(pat.c_str(), regex::perl | regex::icase);
|
expr.assign(pat.c_str(), regex::perl | regex::icase);
|
||||||
|
VERIFY(valid());
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
11
src/mask.h
11
src/mask.h
|
|
@ -77,12 +77,23 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
bool match(const string& str) const {
|
bool match(const string& str) const {
|
||||||
|
DEBUG("mask.match",
|
||||||
|
"Matching: \"" << str << "\" =~ /" << expr.str() << "/ = "
|
||||||
|
<< (boost::regex_search(str, expr) ? "true" : "false"));
|
||||||
return boost::regex_search(str, expr);
|
return boost::regex_search(str, expr);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool empty() const {
|
bool empty() const {
|
||||||
return expr.empty();
|
return expr.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool valid() const {
|
||||||
|
if (expr.status() != 0) {
|
||||||
|
DEBUG("ledger.validate", "mask_t: expr.status() != 0");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
inline std::ostream& operator<<(std::ostream& out, const mask_t& mask) {
|
inline std::ostream& operator<<(std::ostream& out, const mask_t& mask) {
|
||||||
|
|
|
||||||
|
|
@ -622,10 +622,12 @@ public:
|
||||||
mask_t& as_mask_lval() {
|
mask_t& as_mask_lval() {
|
||||||
assert(is_mask());
|
assert(is_mask());
|
||||||
_dup();
|
_dup();
|
||||||
|
VERIFY(boost::get<mask_t>(storage->data).valid());
|
||||||
return boost::get<mask_t>(storage->data);
|
return boost::get<mask_t>(storage->data);
|
||||||
}
|
}
|
||||||
const mask_t& as_mask() const {
|
const mask_t& as_mask() const {
|
||||||
assert(is_mask());
|
assert(is_mask());
|
||||||
|
VERIFY(boost::get<mask_t>(storage->data).valid());
|
||||||
return boost::get<mask_t>(storage->data);
|
return boost::get<mask_t>(storage->data);
|
||||||
}
|
}
|
||||||
void set_mask(const string& val) {
|
void set_mask(const string& val) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue