summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2010-05-08 02:01:59 -0400
committerJohn Wiegley <johnw@newartisans.com>2010-05-08 02:01:59 -0400
commit713f308d0fda2cef2f171feac860e65d5483e56d (patch)
tree547423f6fee54351344e3c735ade51dac65e99d8 /src
parent8acdb85a917d36a2b8468349d1fe82688d73fed9 (diff)
downloadfork-ledger-713f308d0fda2cef2f171feac860e65d5483e56d.tar.gz
fork-ledger-713f308d0fda2cef2f171feac860e65d5483e56d.tar.bz2
fork-ledger-713f308d0fda2cef2f171feac860e65d5483e56d.zip
interactive_t now takes an "X" for expressions
Diffstat (limited to 'src')
-rw-r--r--src/interactive.cc4
-rw-r--r--src/interactive.h13
2 files changed, 17 insertions, 0 deletions
diff --git a/src/interactive.cc b/src/interactive.cc
index d0baf07a..9aeb5307 100644
--- a/src/interactive.cc
+++ b/src/interactive.cc
@@ -122,6 +122,10 @@ void interactive_t::verify_arguments() const
label = _("a scope");
wrong_arg = ! next_arg->is_scope();
break;
+ case 'X':
+ label = _("an expression");
+ wrong_arg = ! next_arg->is_expr();
+ break;
case 'S':
label = _("a sequence");
wrong_arg = false;
diff --git a/src/interactive.h b/src/interactive.h
index fbc4ffeb..04c23ae5 100644
--- a/src/interactive.h
+++ b/src/interactive.h
@@ -120,6 +120,19 @@ inline const value_t::sequence_t&
interactive_t::get<const value_t::sequence_t&>(std::size_t index) {
return value_at(index).as_sequence();
}
+template <>
+inline scope_t *
+interactive_t::get<scope_t *>(std::size_t index) {
+ return value_at(index).as_scope();
+}
+template <>
+inline expr_t& interactive_t::get<expr_t&>(std::size_t index) {
+ return value_at(index).as_expr_lval();
+}
+template <>
+inline const expr_t& interactive_t::get<const expr_t&>(std::size_t index) {
+ return value_at(index).as_expr();
+}
template <typename T>
class in_context_t : public interactive_t