| /* |
| * Copyright 2021 Google LLC. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "src/sksl/dsl/DSLStatement.h" |
| |
| #include "src/sksl/SkSLPosition.h" |
| #include "src/sksl/SkSLThreadContext.h" |
| #include "src/sksl/dsl/DSLExpression.h" |
| #include "src/sksl/ir/SkSLExpression.h" |
| #include "src/sksl/ir/SkSLExpressionStatement.h" |
| #include "src/sksl/ir/SkSLNop.h" |
| |
| namespace SkSL::dsl { |
| |
| DSLStatement::DSLStatement(DSLExpression expr) { |
| std::unique_ptr<SkSL::Expression> skslExpr = expr.release(); |
| if (skslExpr) { |
| fStatement = SkSL::ExpressionStatement::Convert(ThreadContext::Context(), |
| std::move(skslExpr)); |
| } |
| } |
| |
| DSLStatement::DSLStatement(std::unique_ptr<SkSL::Statement> stmt) |
| : fStatement(std::move(stmt)) { |
| SkASSERT(this->hasValue()); |
| } |
| |
| DSLStatement::DSLStatement(std::unique_ptr<SkSL::Statement> stmt, Position pos) |
| : fStatement(stmt ? std::move(stmt) : SkSL::Nop::Make()) { |
| if (pos.valid() && !fStatement->fPosition.valid()) { |
| fStatement->fPosition = pos; |
| } |
| } |
| |
| } // namespace SkSL::dsl |