52 FieldAccess::OwnerKind::kAnonymousInterfaceBlock);
60 std::unique_ptr<Expression>
Index(std::unique_ptr<Expression>
base,
61 std::unique_ptr<Expression> idx)
const {
66 std::unique_ptr<Expression>
Binary(std::unique_ptr<Expression> l,
68 std::unique_ptr<Expression> r)
const {
69 Position pos = l->fPosition.rangeThrough(r->fPosition);
73 std::unique_ptr<Expression>
Mul(std::unique_ptr<Expression> l,
74 std::unique_ptr<Expression> r)
const {
78 std::unique_ptr<Expression>
Add(std::unique_ptr<Expression> l,
79 std::unique_ptr<Expression> r)
const {
87 std::unique_ptr<Expression>
Int(
int value)
const {
91 std::unique_ptr<Expression>
CtorXYZW(std::unique_ptr<Expression> xy,
92 std::unique_ptr<Expression> z,
93 std::unique_ptr<Expression>
w)
const {
95 args.push_back(std::move(xy));
96 args.push_back(std::move(z));
97 args.push_back(std::move(
w));
102 std::unique_ptr<Statement>
Assign(std::unique_ptr<Expression> l,
103 std::unique_ptr<Expression> r)
const {
112 std::unique_ptr<Expression> idx) {
115 const Symbol* floatBufferArraySymbol =
120 auto floatBufferArrayAccess = std::make_unique<FieldAccess>(
122 std::make_unique<VariableReference>(
124 &floatBufferArrayField.
owner(),
133 std::move(floatBufferArrayAccess),
SkAssertResult(font.textToGlyphs("Hello", 5, SkTextEncoding::kUTF8, glyphs, std::size(glyphs))==count)
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
SymbolTable * fSymbolTable
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)
const Variable & owner() const
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)
const Symbol * find(std::string_view name) const
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)
@ kAnonymousInterfaceBlock
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
static std::unique_ptr< Expression > LoadFloatBuffer(const Context &context, const SkSL::ShaderCaps &shaderCaps, Position position, std::unique_ptr< Expression > idx)
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
const char * fFloatBufferArrayName