8#ifndef SKSL_FIELDACCESS
9#define SKSL_FIELDACCESS
55 std::unique_ptr<Expression>
base,
56 std::string_view field);
59 static std::unique_ptr<Expression>
Make(
const Context& context,
61 std::unique_ptr<Expression>
base,
65 std::unique_ptr<Expression>&
base() {
69 const std::unique_ptr<Expression>&
base()
const {
82 return std::make_unique<FieldAccess>(
pos,
95 std::unique_ptr<Expression> fBase;
std::unique_ptr< Expression > clone() const
Expression(Position pos, Kind kind, const Type *type)
const Type & type() const
std::string description() const final
FieldAccess(Position pos, std::unique_ptr< Expression > base, int fieldIndex, OwnerKind ownerKind=OwnerKind::kDefault)
std::unique_ptr< Expression > clone(Position pos) const override
static constexpr Kind kIRNodeKind
static std::unique_ptr< Expression > Convert(const Context &context, Position pos, std::unique_ptr< Expression > base, std::string_view field)
const std::unique_ptr< Expression > & base() const
static std::unique_ptr< Expression > Make(const Context &context, Position pos, std::unique_ptr< Expression > base, int fieldIndex, OwnerKind ownerKind=OwnerKind::kDefault)
std::unique_ptr< Expression > & base()
OwnerKind ownerKind() const
FieldAccessOwnerKind OwnerKind
size_t initialSlot() const
@ kAnonymousInterfaceBlock