summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2009-02-23 14:49:03 -0400
committerJohn Wiegley <johnw@newartisans.com>2009-02-23 14:49:03 -0400
commit9a44b8a547c44111ba467e2fc37a8c43dc205501 (patch)
treea1b9e593be370d89e1f64ba0dda44cdee3f421cc /src
parentf96daf5fdee73e001ab392b1af904c0f3c824121 (diff)
downloadledger-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.cc40
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;
}