mirror of
https://github.com/zeek/zeek.git
synced 2025-10-17 14:08:20 +00:00
Expr method to invert the sense of a relational
This commit is contained in:
parent
b1e95d68e0
commit
4ee8bd0082
2 changed files with 31 additions and 0 deletions
24
src/Expr.cc
24
src/Expr.cc
|
@ -211,6 +211,11 @@ ExprPtr Expr::MakeLvalue()
|
|||
return {NewRef{}, this};
|
||||
}
|
||||
|
||||
bool Expr::InvertSense()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void Expr::EvalIntoAggregate(const zeek::Type* /* t */, Val* /* aggr */,
|
||||
Frame* /* f */) const
|
||||
{
|
||||
|
@ -2043,6 +2048,12 @@ ValPtr EqExpr::Fold(Val* v1, Val* v2) const
|
|||
return BinaryExpr::Fold(v1, v2);
|
||||
}
|
||||
|
||||
bool EqExpr::InvertSense()
|
||||
{
|
||||
tag = (tag == EXPR_EQ ? EXPR_NE : EXPR_EQ);
|
||||
return true;
|
||||
}
|
||||
|
||||
RelExpr::RelExpr(BroExprTag arg_tag, ExprPtr arg_op1, ExprPtr arg_op2)
|
||||
: BinaryExpr(arg_tag, std::move(arg_op1), std::move(arg_op2))
|
||||
{
|
||||
|
@ -2100,6 +2111,19 @@ void RelExpr::Canonicize()
|
|||
}
|
||||
}
|
||||
|
||||
bool RelExpr::InvertSense()
|
||||
{
|
||||
switch ( tag ) {
|
||||
case EXPR_LT: tag = EXPR_GE; return true;
|
||||
case EXPR_LE: tag = EXPR_GT; return true;
|
||||
case EXPR_GE: tag = EXPR_LT; return true;
|
||||
case EXPR_GT: tag = EXPR_LE; return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
CondExpr::CondExpr(ExprPtr arg_op1, ExprPtr arg_op2, ExprPtr arg_op3)
|
||||
: Expr(EXPR_COND),
|
||||
op1(std::move(arg_op1)), op2(std::move(arg_op2)), op3(std::move(arg_op3))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue