188 std::string_view
name,
190 bool interfaceBlock =
false);
204 template <
typename T>
206 return this->
typeKind() == T::kTypeKind;
209 template <
typename T>
212 return static_cast<const T&
>(*this);
215 template <
typename T>
218 return static_cast<T&
>(*this);
277 return fAbbreviatedName;
470 SK_ABORT(
"Internal error: not a struct");
631 std::unique_ptr<Expression>
size)
const;
643 strcpy(fAbbreviatedName, abbrev);
#define SkDEBUGFAIL(message)
#define SK_ABORT(message,...)
std::string_view name() const
Symbol(Position pos, Kind kind, std::string_view name, const Type *type=nullptr)
virtual const Type & slotType(size_t) const
static constexpr Kind kIRNodeKind
virtual bool isArray() const
Type(const Type &other)=delete
static std::unique_ptr< Type > MakeTextureType(const char *name, SpvDim_ dimensions, bool isDepth, bool isArrayedTexture, bool isMultisampled, TextureAccess textureAccess)
const Type * applyPrecisionQualifiers(const Context &context, ModifierFlags *modifierFlags, Position pos) const
bool isInRootSymbolTable() const
virtual int bitWidth() const
bool highPrecision() const
virtual bool isVector() const
CoercionCost coercionCost(const Type &other) const
Type(std::string_view name, const char *abbrev, TypeKind kind, Position pos=Position())
static std::unique_ptr< Type > MakeArrayType(const Context &context, std::string_view name, const Type &componentType, int columns)
virtual int priority() const
bool isAllowedInES2(const Context &context) const
std::unique_ptr< Expression > coerceExpression(std::unique_ptr< Expression > expr, const Context &context) const
bool isEffectChild() const
bool checkForOutOfRangeLiteral(const Context &context, double value, Position pos) const
virtual const Type & componentType() const
static std::unique_ptr< Type > MakeSpecialType(const char *name, const char *abbrev, Type::TypeKind typeKind)
virtual bool isInterfaceBlock() const
virtual bool isOrContainsArray() const
static std::unique_ptr< Type > MakeScalarType(std::string_view name, const char *abbrev, Type::NumberKind numberKind, int8_t priority, int8_t bitWidth)
SKSL_INT convertArraySize(const Context &context, Position arrayPos, std::unique_ptr< Expression > size) const
const char * abbreviatedName() const
virtual SkSpan< const Field > fields() const
static std::unique_ptr< Type > MakeGenericType(const char *name, SkSpan< const Type *const > types, const Type *slotType)
bool matches(const Type &other) const
virtual bool isMatrix() const
virtual bool isDepth() const
static std::unique_ptr< Type > MakeLiteralType(const char *name, const Type &scalarType, int8_t priority)
virtual bool isLiteral() const
virtual TextureAccess textureAccess() const
virtual const Type & resolve() const
bool checkIfUsableInArray(const Context &context, Position arrayPos) const
static std::unique_ptr< Type > MakeMatrixType(std::string_view name, const char *abbrev, const Type &componentType, int columns, int8_t rows)
virtual const Type & textureType() const
virtual int columns() const
virtual int structNestingDepth() const
virtual size_t slotCount() const
virtual bool isBuiltin() const
static constexpr int kUnsizedArray
virtual bool isScalar() const
virtual NumberKind numberKind() const
virtual bool isAllowedInES2() const
virtual const Type & scalarTypeForLiteral() const
virtual bool isUnsizedArray() const
virtual bool isAllowedInUniform(Position *errorPosition=nullptr) const
static std::unique_ptr< Type > MakeAtomicType(std::string_view name, const char *abbrev)
std::string description() const override
bool hasPrecision() const
const Type * applyAccessQualifiers(const Context &context, ModifierFlags *modifierFlags, Position pos) const
const Type & columnType(const Context &context) const
virtual double maximumValue() const
std::string getArrayName(int arraySize) const
virtual bool isOrContainsAtomic() const
virtual bool isMultisampled() const
static std::unique_ptr< Type > MakeStructType(const Context &context, Position pos, std::string_view name, skia_private::TArray< Field > fields, bool interfaceBlock=false)
virtual SkSpan< const Type *const > coercibleTypes() const
bool canCoerceTo(const Type &other, bool allowNarrowing) const
bool isStorageTexture() const
virtual bool isArrayedTexture() const
bool checkForOutOfRangeLiteral(const Context &context, const Expression &expr) const
std::string displayName() const
const Type & toCompound(const Context &context, int columns, int rows) const
static constexpr int kMaxAbbrevLength
TypeKind typeKind() const
virtual bool isStruct() const
const Type * clone(const Context &context, SymbolTable *symbolTable) const
SKSL_INT convertArraySize(const Context &context, Position arrayPos, Position sizePos, SKSL_INT size) const
virtual SpvDim_ dimensions() const
static std::unique_ptr< Type > MakeVectorType(std::string_view name, const char *abbrev, const Type &componentType, int columns)
static std::unique_ptr< Type > MakeSamplerType(const char *name, const Type &textureType)
virtual double minimumValue() const
static std::unique_ptr< Type > MakeAliasType(std::string_view name, const Type &targetType)
virtual bool isOrContainsUnsizedArray() const
const Type * applyQualifiers(const Context &context, ModifierFlags *modifierFlags, Position pos) const
FlutterSemanticsFlag flags
DEF_SWITCHES_START aot vmservice shared library name
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
bool operator<(CoercionCost rhs) const
static CoercionCost Impossible()
bool isPossible(bool allowNarrowing) const
static CoercionCost Narrowing(int cost)
CoercionCost operator+(CoercionCost rhs) const
static CoercionCost Free()
bool operator<=(CoercionCost rhs) const
static CoercionCost Normal(int cost)
std::string description() const
Field(Position pos, Layout layout, ModifierFlags flags, std::string_view name, const Type *type)
ModifierFlags fModifierFlags