49 FieldAccess::OwnerKind::kAnonymousInterfaceBlock);
57 std::unique_ptr<Expression>
Index(std::unique_ptr<Expression>
base,
58 std::unique_ptr<Expression> idx)
const {
63 std::unique_ptr<Expression>
Binary(std::unique_ptr<Expression> l,
65 std::unique_ptr<Expression> r)
const {
66 Position pos = l->fPosition.rangeThrough(r->fPosition);
70 std::unique_ptr<Expression>
Mul(std::unique_ptr<Expression> l,
71 std::unique_ptr<Expression> r)
const {
75 std::unique_ptr<Expression>
Add(std::unique_ptr<Expression> l,
76 std::unique_ptr<Expression> r)
const {
80 std::unique_ptr<Expression>
Float(
float value)
const {
84 std::unique_ptr<Expression>
Int(
int value)
const {
88 std::unique_ptr<Expression>
CtorXYZW(std::unique_ptr<Expression> xy,
89 std::unique_ptr<Expression> z,
90 std::unique_ptr<Expression>
w)
const {
93 args.push_back(std::move(z));
94 args.push_back(std::move(
w));
99 std::unique_ptr<Statement>
Assign(std::unique_ptr<Expression> l,
100 std::unique_ptr<Expression> r)
const {
#define SkAssertResult(cond)
static std::unique_ptr< Expression > Make(const Context &context, Position pos, std::unique_ptr< Expression > left, Operator op, std::unique_ptr< Expression > right)
const std::unique_ptr< Type > fInt
const std::unique_ptr< Type > fFloat4
const std::unique_ptr< Type > fFloat
static std::unique_ptr< Expression > Make(const Context &context, Position pos, const Type &type, ExpressionArray args)
const BuiltinTypes & fTypes
static std::unique_ptr< Statement > Make(const Context &context, std::unique_ptr< Expression > expr)
static std::unique_ptr< Expression > Make(const Context &context, Position pos, std::unique_ptr< Expression > base, int fieldIndex, OwnerKind ownerKind=OwnerKind::kDefault)
static std::unique_ptr< Expression > Make(const Context &context, Position pos, std::unique_ptr< Expression > base, std::unique_ptr< Expression > index)
static std::unique_ptr< Literal > MakeInt(const Context &context, Position pos, SKSL_INT value)
static std::unique_ptr< Literal > MakeFloat(const Context &context, Position pos, float value)
static std::unique_ptr< Expression > Make(const Context &context, Position pos, std::unique_ptr< Expression > expr, ComponentArray inComponents)
static std::unique_ptr< Expression > Make(Position pos, const Variable *variable, RefKind refKind=RefKind::kRead)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
bool UpdateVariableRefKind(Expression *expr, VariableRefKind kind, ErrorReporter *errors=nullptr)
std::unique_ptr< Expression > Ref(const Variable *var) const
std::unique_ptr< Expression > Swizzle(std::unique_ptr< Expression > base, ComponentArray c) const
std::unique_ptr< Expression > Add(std::unique_ptr< Expression > l, std::unique_ptr< Expression > r) const
IRHelpers(const Context &c)
std::unique_ptr< Expression > Field(const Variable *var, int idx) const
std::unique_ptr< Expression > Mul(std::unique_ptr< Expression > l, std::unique_ptr< Expression > r) const
std::unique_ptr< Expression > Index(std::unique_ptr< Expression > base, std::unique_ptr< Expression > idx) const
std::unique_ptr< Expression > CtorXYZW(std::unique_ptr< Expression > xy, std::unique_ptr< Expression > z, std::unique_ptr< Expression > w) const
std::unique_ptr< Expression > Float(float value) const
std::unique_ptr< Expression > Int(int value) const
std::unique_ptr< Expression > Binary(std::unique_ptr< Expression > l, Operator op, std::unique_ptr< Expression > r) const
std::unique_ptr< Statement > Assign(std::unique_ptr< Expression > l, std::unique_ptr< Expression > r) const