Flutter Engine
The Flutter Engine
|
#include <SkSLConstructorSplat.h>
Public Member Functions | |
ConstructorSplat (Position pos, const Type &type, std::unique_ptr< Expression > arg) | |
std::unique_ptr< Expression > | clone (Position pos) const override |
bool | supportsConstantValues () const override |
std::optional< double > | getConstantValue (int n) const override |
Public Member Functions inherited from SkSL::SingleArgumentConstructor | |
SingleArgumentConstructor (Position pos, Kind kind, const Type *type, std::unique_ptr< Expression > argument) | |
std::unique_ptr< Expression > & | argument () |
const std::unique_ptr< Expression > & | argument () const |
SkSpan< std::unique_ptr< Expression > > | argumentSpan () final |
SkSpan< const std::unique_ptr< Expression > > | argumentSpan () const final |
Public Member Functions inherited from SkSL::AnyConstructor | |
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 () |
Static Public Member Functions | |
static std::unique_ptr< Expression > | Make (const Context &context, Position pos, const Type &type, std::unique_ptr< Expression > arg) |
Static Public Member Functions inherited from SkSL::Poolable | |
static void * | operator new (const size_t size) |
static void | operator delete (void *ptr) |
Static Public Attributes | |
static constexpr Kind | kIRNodeKind = Kind::kConstructorSplat |
Additional Inherited Members | |
Public Types inherited from SkSL::Expression | |
enum class | ComparisonResult { kUnknown = -1 , kNotEqual , kEqual } |
using | Kind = ExpressionKind |
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 |
Represents the construction of a vector splat, such as half3(n)
.
These always contain exactly 1 scalar.
Definition at line 31 of file SkSLConstructorSplat.h.
|
inline |
Definition at line 35 of file SkSLConstructorSplat.h.
|
inlineoverridevirtual |
Implements SkSL::Expression.
Definition at line 44 of file SkSLConstructorSplat.h.
|
inlineoverridevirtual |
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::AnyConstructor.
Definition at line 52 of file SkSLConstructorSplat.h.
|
static |
Definition at line 14 of file SkSLConstructorSplat.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::AnyConstructor.
Definition at line 48 of file SkSLConstructorSplat.h.
|
inlinestaticconstexpr |
Definition at line 33 of file SkSLConstructorSplat.h.