/** * Returns true if this expression is incomplete. Specifically, dangling function/method-call * references that were never invoked, or type references that were never constructed, are * considered incomplete expressions and should result in an error.
*/ bool isIncomplete(const Context& context) const;
/** * Compares this constant expression against another constant expression. Returns kUnknown if * we aren't able to deduce a result (an expression isn't actually constant, the types are * mismatched, etc).
*/ enumclass ComparisonResult {
kUnknown = -1,
kNotEqual,
kEqual
}; virtual ComparisonResult compareConstant(const Expression& other) const { return ComparisonResult::kUnknown;
}
/** * 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.)
*/ virtualbool supportsConstantValues() const { returnfalse;
}
/** * 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`.
*/ virtual std::optional<double> getConstantValue(int n) const {
SkASSERT(!this->supportsConstantValues()); return std::nullopt;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.