Flutter Engine
The Flutter Engine
|
#include <SkSLConstructor.h>
Public Member Functions | |
AnyConstructor (Position pos, Kind kind, const Type *type) | |
virtual SkSpan< std::unique_ptr< Expression > > | argumentSpan ()=0 |
virtual SkSpan< const std::unique_ptr< Expression > > | argumentSpan () const =0 |
std::string | description (OperatorPrecedence) const override |
const Type & | componentType () const |
bool | supportsConstantValues () const override |
std::optional< double > | getConstantValue (int n) const override |
ComparisonResult | compareConstant (const Expression &other) const override |
Public Member Functions inherited from SkSL::Expression | |
Expression (Position pos, Kind kind, const Type *type) | |
Kind | kind () const |
const Type & | type () const |
bool | isAnyConstructor () const |
bool | isIntLiteral () const |
bool | isFloatLiteral () const |
bool | isBoolLiteral () const |
AnyConstructor & | asAnyConstructor () |
const AnyConstructor & | asAnyConstructor () const |
bool | isIncomplete (const Context &context) const |
virtual ComparisonResult | compareConstant (const Expression &other) const |
CoercionCost | coercionCost (const Type &target) const |
virtual bool | supportsConstantValues () const |
virtual std::optional< double > | getConstantValue (int n) const |
virtual std::unique_ptr< Expression > | clone (Position pos) const =0 |
std::unique_ptr< Expression > | clone () const |
std::string | description () const final |
virtual std::string | description (OperatorPrecedence parentPrecedence) const =0 |
Public Member Functions inherited from SkSL::IRNode | |
virtual | ~IRNode () |
virtual std::string | description () const =0 |
IRNode (const IRNode &)=delete | |
IRNode & | operator= (const IRNode &)=delete |
Position | position () const |
void | setPosition (Position p) |
template<typename T > | |
bool | is () const |
template<typename T > | |
const T & | as () const |
template<typename T > | |
T & | as () |
Additional Inherited Members | |
Public Types inherited from SkSL::Expression | |
enum class | ComparisonResult { kUnknown = -1 , kNotEqual , kEqual } |
using | Kind = ExpressionKind |
Static Public Member Functions inherited from SkSL::Poolable | |
static void * | operator new (const size_t size) |
static void | operator delete (void *ptr) |
Public Attributes inherited from SkSL::IRNode | |
Position | fPosition |
Protected Member Functions inherited from SkSL::IRNode | |
IRNode (Position position, int kind) | |
Protected Attributes inherited from SkSL::IRNode | |
int | fKind |
Base class representing a constructor with unknown arguments.
Definition at line 31 of file SkSLConstructor.h.
Definition at line 33 of file SkSLConstructor.h.
|
pure virtual |
Implemented in SkSL::SingleArgumentConstructor, and SkSL::MultiArgumentConstructor.
|
pure virtual |
Implemented in SkSL::SingleArgumentConstructor, and SkSL::MultiArgumentConstructor.
|
overridevirtual |
Reimplemented from SkSL::Expression.
Definition at line 192 of file SkSLConstructor.cpp.
|
inline |
Definition at line 41 of file SkSLConstructor.h.
|
overridevirtual |
Implements SkSL::Expression.
Definition at line 228 of file SkSLConstructor.cpp.
|
overridevirtual |
Returns the n'th compile-time constant value within a literal or constructor. Use Type::slotCount to determine the number of slots within an expression. Slots which do not contain compile-time constant values will return nullopt. vec4(1, vec2(2), 3)
contains four compile-time constants: (1, 2, 2, 3) mat2(f)
contains four slots, and two are constant: (nullopt, 0, 0, nullopt) All classes which override this function must also implement supportsConstantValues
.
Reimplemented from SkSL::Expression.
Reimplemented in SkSL::ConstructorDiagonalMatrix, SkSL::ConstructorMatrixResize, and SkSL::ConstructorSplat.
Definition at line 178 of file SkSLConstructor.cpp.
|
inlineoverridevirtual |
Returns true if this expression type supports getConstantValue
. (This particular expression may or may not actually contain a constant value.) It's harmless to call getConstantValue
on expressions which don't support constant values or don't contain any constant values, but if supportsConstantValues
returns false, you can assume that getConstantValue
will return nullopt for every slot of this expression. This allows for early-out opportunities in some cases. (Some expressions have tons of slots but never hold a constant value; e.g. a variable holding a very large array.)
Reimplemented from SkSL::Expression.
Reimplemented in SkSL::ConstructorDiagonalMatrix, SkSL::ConstructorMatrixResize, and SkSL::ConstructorSplat.
Definition at line 45 of file SkSLConstructor.h.