Allow sequences to be compared to 0
It is true if every member of the sequence passes the test.
This commit is contained in:
parent
f96daf5fde
commit
9a44b8a547
1 changed files with 40 additions and 0 deletions
40
src/value.cc
40
src/value.cc
|
|
@ -811,6 +811,26 @@ bool value_t::is_less_than(const value_t& val) const
|
||||||
return as_string() < val.as_string();
|
return as_string() < val.as_string();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SEQUENCE:
|
||||||
|
switch (val.type()) {
|
||||||
|
case INTEGER:
|
||||||
|
case AMOUNT: {
|
||||||
|
if (val.is_nonzero())
|
||||||
|
break;
|
||||||
|
|
||||||
|
bool no_amounts = true;
|
||||||
|
foreach (const value_t& value, as_sequence()) {
|
||||||
|
if (value >= 0L)
|
||||||
|
return false;
|
||||||
|
no_amounts = false;
|
||||||
|
}
|
||||||
|
return ! no_amounts;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -881,6 +901,26 @@ bool value_t::is_greater_than(const value_t& val) const
|
||||||
return as_string() > val.as_string();
|
return as_string() > val.as_string();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SEQUENCE:
|
||||||
|
switch (val.type()) {
|
||||||
|
case INTEGER:
|
||||||
|
case AMOUNT: {
|
||||||
|
if (val.is_nonzero())
|
||||||
|
break;
|
||||||
|
|
||||||
|
bool no_amounts = true;
|
||||||
|
foreach (const value_t& value, as_sequence()) {
|
||||||
|
if (value <= 0L)
|
||||||
|
return false;
|
||||||
|
no_amounts = false;
|
||||||
|
}
|
||||||
|
return ! no_amounts;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue