diff options
author | John Wiegley <johnw@newartisans.com> | 2009-02-23 14:49:03 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-02-23 14:49:03 -0400 |
commit | 9a44b8a547c44111ba467e2fc37a8c43dc205501 (patch) | |
tree | a1b9e593be370d89e1f64ba0dda44cdee3f421cc /src | |
parent | f96daf5fdee73e001ab392b1af904c0f3c824121 (diff) | |
download | ledger-9a44b8a547c44111ba467e2fc37a8c43dc205501.tar.gz ledger-9a44b8a547c44111ba467e2fc37a8c43dc205501.tar.bz2 ledger-9a44b8a547c44111ba467e2fc37a8c43dc205501.zip |
Allow sequences to be compared to 0
It is true if every member of the sequence passes the test.
Diffstat (limited to 'src')
-rw-r--r-- | src/value.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/value.cc b/src/value.cc index 5d32f8b7..1c2541b8 100644 --- a/src/value.cc +++ b/src/value.cc @@ -811,6 +811,26 @@ bool value_t::is_less_than(const value_t& val) const return as_string() < val.as_string(); 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: break; } @@ -881,6 +901,26 @@ bool value_t::is_greater_than(const value_t& val) const return as_string() > val.as_string(); 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: break; } |