diff options
-rw-r--r-- | src/interactive.cc | 4 | ||||
-rw-r--r-- | src/interactive.h | 13 |
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 |