8#ifndef SKSL_BINARYEXPRESSION
9#define SKSL_BINARYEXPRESSION
25class VariableReference;
48 std::unique_ptr<Expression>
left,
50 std::unique_ptr<Expression>
right);
54 static std::unique_ptr<Expression>
Make(
const Context& context,
56 std::unique_ptr<Expression>
left,
58 std::unique_ptr<Expression>
right);
62 static std::unique_ptr<Expression>
Make(
const Context& context,
64 std::unique_ptr<Expression>
left,
66 std::unique_ptr<Expression>
right,
67 const Type* resultType);
69 std::unique_ptr<Expression>&
left() {
73 const std::unique_ptr<Expression>&
left()
const {
77 std::unique_ptr<Expression>&
right() {
81 const std::unique_ptr<Expression>&
right()
const {
103 std::unique_ptr<Expression> fLeft;
105 std::unique_ptr<Expression> fRight;
static std::unique_ptr< Expression > Convert(const Context &context, Position pos, std::unique_ptr< Expression > left, Operator op, std::unique_ptr< Expression > right)
const std::unique_ptr< Expression > & left() const
std::unique_ptr< Expression > & left()
BinaryExpression(Position pos, std::unique_ptr< Expression > left, Operator op, std::unique_ptr< Expression > right, const Type *type)
std::unique_ptr< Expression > & right()
const std::unique_ptr< Expression > & right() const
static std::unique_ptr< Expression > Make(const Context &context, Position pos, std::unique_ptr< Expression > left, Operator op, std::unique_ptr< Expression > right)
VariableReference * isAssignmentIntoVariable()
static constexpr Kind kIRNodeKind
Operator getOperator() const
std::unique_ptr< Expression > clone() const
Expression(Position pos, Kind kind, const Type *type)
const Type & type() const
std::string description() const final
bool isAssignment() const