Allow balance values to be compared < or > 0
This commit is contained in:
parent
018c812fda
commit
8ca91c1196
1 changed files with 42 additions and 0 deletions
42
src/value.cc
42
src/value.cc
|
|
@ -769,6 +769,27 @@ bool value_t::is_less_than(const value_t& val) const
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BALANCE:
|
||||||
|
switch (val.type()) {
|
||||||
|
case INTEGER:
|
||||||
|
if (val.as_long() != 0)
|
||||||
|
break;
|
||||||
|
// fall through...
|
||||||
|
case AMOUNT:
|
||||||
|
if (val.is_nonzero())
|
||||||
|
break;
|
||||||
|
|
||||||
|
foreach (const balance_t::amounts_map::value_type& pair,
|
||||||
|
as_balance().amounts) {
|
||||||
|
if (pair.second > 0L)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case STRING:
|
case STRING:
|
||||||
if (val.is_string())
|
if (val.is_string())
|
||||||
return as_string() < val.as_string();
|
return as_string() < val.as_string();
|
||||||
|
|
@ -818,6 +839,27 @@ bool value_t::is_greater_than(const value_t& val) const
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BALANCE:
|
||||||
|
switch (val.type()) {
|
||||||
|
case INTEGER:
|
||||||
|
if (val.as_long() != 0)
|
||||||
|
break;
|
||||||
|
// fall through...
|
||||||
|
case AMOUNT:
|
||||||
|
if (val.is_nonzero())
|
||||||
|
break;
|
||||||
|
|
||||||
|
foreach (const balance_t::amounts_map::value_type& pair,
|
||||||
|
as_balance().amounts) {
|
||||||
|
if (pair.second < 0L)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case STRING:
|
case STRING:
|
||||||
if (val.is_string())
|
if (val.is_string())
|
||||||
return as_string() > val.as_string();
|
return as_string() > val.as_string();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue