Lines Matching defs:expr
131 void MetalCodeGenerator::writeExpression(const Expression& expr, Precedence parentPrecedence) {
132 switch (expr.kind()) {
134 this->writeBinaryExpression(expr.as<BinaryExpression>(), parentPrecedence);
138 this->writeAnyConstructor(expr.asAnyConstructor(), "{", "}", parentPrecedence);
141 this->writeConstructorArrayCast(expr.as<ConstructorArrayCast>(), parentPrecedence);
144 this->writeConstructorCompound(expr.as<ConstructorCompound>(), parentPrecedence);
148 this->writeAnyConstructor(expr.asAnyConstructor(), "(", ")", parentPrecedence);
151 this->writeConstructorMatrixResize(expr.as<ConstructorMatrixResize>(),
156 this->writeCastConstructor(expr.asAnyConstructor(), "(", ")", parentPrecedence);
159 this->writeFieldAccess(expr.as<FieldAccess>());
162 this->writeLiteral(expr.as<Literal>());
165 this->writeFunctionCall(expr.as<FunctionCall>());
168 this->writePrefixExpression(expr.as<PrefixExpression>(), parentPrecedence);
171 this->writePostfixExpression(expr.as<PostfixExpression>(), parentPrecedence);
174 this->writeSetting(expr.as<Setting>());
177 this->writeSwizzle(expr.as<Swizzle>());
180 this->writeVariableReference(expr.as<VariableReference>());
183 this->writeTernaryExpression(expr.as<TernaryExpression>(), parentPrecedence);
186 this->writeIndexExpression(expr.as<IndexExpression>());
189 SkDEBUGFAILF("unsupported expression: %s", expr.description().c_str());
1041 for (const std::unique_ptr<Expression>& expr : args) {
1042 name.appendf("_%s", this->typeName(expr->type()).c_str());
1058 for (const std::unique_ptr<Expression>& expr : args) {
1060 this->typeName(expr->type()).c_str(), argIndex++);
1101 for (const std::unique_ptr<Expression>& expr : c.arguments()) {
1103 if (expr->type().isMatrix()) {
1106 position += expr->type().columns();
1199 const Expression& expr = *c.argumentSpan().front();
1200 if (expr.type().isMatrix()) {
1201 this->write(this->getVectorFromMat2x2ConstructorHelper(expr.type()));
1203 this->writeExpression(expr, Precedence::kSequence);
1221 for (const std::unique_ptr<Expression>& expr : c.arguments()) {
1224 this->writeExpression(*expr, Precedence::kSequence);
1339 void MetalCodeGenerator::writeIndexExpression(const IndexExpression& expr) {
1340 this->writeExpression(*expr.base(), Precedence::kPostfix);
1342 this->writeExpression(*expr.index(), Precedence::kTopLevel);
1567 void MetalCodeGenerator::writeNumberAsMatrix(const Expression& expr, const Type& matrixType) {
1568 SkASSERT(expr.type().isNumber());
1584 this->writeExpression(expr, Precedence::kMultiplicative);