summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/op.cc18
-rw-r--r--src/op.h22
2 files changed, 3 insertions, 37 deletions
diff --git a/src/op.cc b/src/op.cc
index 53f5b9e6..dc17bce2 100644
--- a/src/op.cc
+++ b/src/op.cc
@@ -140,16 +140,6 @@ value_t expr_t::op_t::calc(scope_t& scope, ptr_op_t * context)
return (right()->calc(scope, context).as_mask()
.match(left()->calc(scope, context).to_string()));
- case INDEX: {
- const call_scope_t& args(downcast<const call_scope_t>(scope));
-
- if (as_index() < args.size())
- return args[as_index()];
- else
- throw_(calc_error, "Reference to non-existing argument " << as_index());
- break;
- }
-
case O_EQ:
return left()->calc(scope, context) == right()->calc(scope, context);
case O_LT:
@@ -246,10 +236,6 @@ bool expr_t::op_t::print(std::ostream& out, const context_t& context) const
out << "<FUNCTION>";
break;
- case INDEX:
- out << '@' << as_index();
- break;
-
case O_NOT:
out << "!(";
if (left() && left()->print(out, context))
@@ -437,10 +423,6 @@ void expr_t::op_t::dump(std::ostream& out, const int depth) const
out << "IDENT: " << as_ident();
break;
- case INDEX:
- out << "INDEX: " << as_index();
- break;
-
case FUNCTION:
out << "FUNCTION";
break;
diff --git a/src/op.h b/src/op.h
index ad900cc5..344c752f 100644
--- a/src/op.h
+++ b/src/op.h
@@ -67,19 +67,17 @@ private:
mutable short refc;
ptr_op_t left_;
- variant<std::size_t, // used by constant INDEX
+ variant<ptr_op_t, // used by all binary operators
value_t, // used by constant VALUE
string, // used by constant IDENT
- function_t, // used by terminal FUNCTION
- ptr_op_t> // used by all binary operators
- data;
+ function_t // used by terminal FUNCTION
+ > data;
public:
enum kind_t {
// Constants
VALUE,
IDENT,
- INDEX,
CONSTANTS,
@@ -138,20 +136,6 @@ public:
assert(refc == 0);
}
- bool is_index() const {
- return data.type() == typeid(std::size_t);
- }
- std::size_t& as_index_lval() {
- assert(kind == INDEX);
- return boost::get<std::size_t>(data);
- }
- const std::size_t& as_index() const {
- return const_cast<op_t *>(this)->as_index_lval();
- }
- void set_index(std::size_t val) {
- data = val;
- }
-
bool is_value() const {
if (kind == VALUE) {
assert(data.type() == typeid(value_t));