Add RelationalExpression helpers.
This CL adds helper methods to the RelationalExpression to determine the
type of relation.
Bug: tint:5
Change-Id: I232c3a2e9f27a7efb91735516ee7e9cfc97882ae
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/18825
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/ast/relational_expression.h b/src/ast/relational_expression.h
index d52afba..04b9064 100644
--- a/src/ast/relational_expression.h
+++ b/src/ast/relational_expression.h
@@ -48,7 +48,7 @@
kModulo,
};
-/// An xor expression
+/// A Relational Expression
class RelationalExpression : public Expression {
public:
/// Constructor
@@ -79,6 +79,49 @@
/// @returns the relation
Relation relation() const { return relation_; }
+ /// @returns true if the relation is and
+ bool IsAnd() const { return relation_ == Relation::kAnd; }
+ /// @returns true if the relation is or
+ bool IsOr() const { return relation_ == Relation::kOr; }
+ /// @returns true if the relation is xor
+ bool IsXor() const { return relation_ == Relation::kXor; }
+ /// @returns true if the relation is logical and
+ bool IsLogicalAnd() const { return relation_ == Relation::kLogicalAnd; }
+ /// @returns true if the relation is logical or
+ bool IsLogicalOr() const { return relation_ == Relation::kLogicalOr; }
+ /// @returns true if the relation is equal
+ bool IsEqual() const { return relation_ == Relation::kEqual; }
+ /// @returns true if the relation is not equal
+ bool IsNotEqual() const { return relation_ == Relation::kNotEqual; }
+ /// @returns true if the relation is less than
+ bool IsLessThan() const { return relation_ == Relation::kLessThan; }
+ /// @returns true if the relation is greater than
+ bool IsGreaterThan() const { return relation_ == Relation::kGreaterThan; }
+ /// @returns true if the relation is less than equal
+ bool IsLessThanEqual() const { return relation_ == Relation::kLessThanEqual; }
+ /// @returns true if the relation is greater than equal
+ bool IsGreaterThanEqual() const {
+ return relation_ == Relation::kGreaterThanEqual;
+ }
+ /// @returns true if the relation is shift left
+ bool IsShiftLeft() const { return relation_ == Relation::kShiftLeft; }
+ /// @returns true if the relation is shift right
+ bool IsShiftRight() const { return relation_ == Relation::kShiftRight; }
+ /// @returns true if the relation is shift right arith
+ bool IsShiftRightArith() const {
+ return relation_ == Relation::kShiftRightArith;
+ }
+ /// @returns true if the relation is add
+ bool IsAdd() const { return relation_ == Relation::kAdd; }
+ /// @returns true if the relation is subtract
+ bool IsSubtract() const { return relation_ == Relation::kSubtract; }
+ /// @returns true if the relation is multiply
+ bool IsMultiply() const { return relation_ == Relation::kMultiply; }
+ /// @returns true if the relation is divide
+ bool IsDivide() const { return relation_ == Relation::kDivide; }
+ /// @returns true if the relation is modulo
+ bool IsModulo() const { return relation_ == Relation::kModulo; }
+
/// Sets the left side of the expression
/// @param lhs the left side to set
void set_lhs(std::unique_ptr<Expression> lhs) { lhs_ = std::move(lhs); }