Removed handling of the unnused INDEX operator.

This commit is contained in:
John Wiegley 2009-02-07 18:42:12 -04:00
parent 1de748fc13
commit 0c8970584e
2 changed files with 3 additions and 37 deletions

View file

@ -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;

View file

@ -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));