summaryrefslogtreecommitdiff
path: root/src/value.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/value.cc')
-rw-r--r--src/value.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/value.cc b/src/value.cc
index 7db334cb..1ebc3110 100644
--- a/src/value.cc
+++ b/src/value.cc
@@ -1237,6 +1237,35 @@ void value_t::in_place_negate()
throw_(value_error, "Cannot negate " << label());
}
+void value_t::in_place_not()
+{
+ switch (type()) {
+ case BOOLEAN:
+ set_boolean(! as_boolean());
+ return;
+ case INTEGER:
+ case DATETIME:
+ set_boolean(! as_long());
+ return;
+ case DATE:
+ set_boolean(! as_long());
+ return;
+ case AMOUNT:
+ set_boolean(! as_amount());
+ return;
+ case BALANCE:
+ set_boolean(! as_balance());
+ return;
+ case BALANCE_PAIR:
+ set_boolean(! as_balance_pair());
+ return;
+ default:
+ break;
+ }
+
+ throw_(value_error, "Cannot not " << label());
+}
+
bool value_t::is_realzero() const
{
switch (type()) {