1 /*
2 * Copyright 2021 Google LLC.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #include "include/sksl/DSLCase.h"
9
10 namespace SkSL {
11
12 namespace dsl {
13
DSLCase(DSLExpression value,SkSL::StatementArray statements,Position pos)14 DSLCase::DSLCase(DSLExpression value, SkSL::StatementArray statements, Position pos)
15 : fValue(std::move(value))
16 , fStatements(std::move(statements))
17 , fPosition(pos) {}
18
DSLCase(DSLExpression value,SkTArray<DSLStatement> statements,Position pos)19 DSLCase::DSLCase(DSLExpression value, SkTArray<DSLStatement> statements, Position pos)
20 : fValue(std::move(value))
21 , fPosition(pos) {
22 fStatements.reserve_back(statements.size());
23 for (DSLStatement& stmt : statements) {
24 fStatements.push_back(stmt.release());
25 }
26 }
27
DSLCase(DSLCase && other)28 DSLCase::DSLCase(DSLCase&& other)
29 : fValue(std::move(other.fValue))
30 , fStatements(std::move(other.fStatements)) {}
31
~DSLCase()32 DSLCase::~DSLCase() {}
33
operator =(DSLCase && other)34 DSLCase& DSLCase::operator=(DSLCase&& other) {
35 fValue.assign(std::move(other.fValue));
36 fStatements = std::move(other.fStatements);
37 return *this;
38 }
39
append(DSLStatement stmt)40 void DSLCase::append(DSLStatement stmt) {
41 fStatements.push_back(stmt.release());
42 }
43
44 } // namespace dsl
45
46 } // namespace SkSL
47