#include "src/sksl/ir/SkSLSwitchStatement.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkTArray.h"
#include "include/private/base/SkTo.h"
#include "src/core/SkTHash.h"
#include "src/sksl/SkSLAnalysis.h"
#include "src/sksl/SkSLBuiltinTypes.h"
#include "src/sksl/SkSLConstantFolder.h"
#include "src/sksl/SkSLContext.h"
#include "src/sksl/SkSLErrorReporter.h"
#include "src/sksl/SkSLProgramSettings.h"
#include "src/sksl/ir/SkSLBlock.h"
#include "src/sksl/ir/SkSLBreakStatement.h"
#include "src/sksl/ir/SkSLNop.h"
#include "src/sksl/ir/SkSLSwitchCase.h"
#include "src/sksl/ir/SkSLSymbolTable.h"
#include "src/sksl/ir/SkSLType.h"
#include "src/sksl/transform/SkSLProgramWriter.h"
#include "src/sksl/transform/SkSLTransform.h"
#include <algorithm>
#include <iterator>
usingnamespaceskia_private;
namespace SkSL {
std::string SwitchStatement::description() const { … }
static TArray<const SwitchCase*> find_duplicate_case_values(const StatementArray& cases) { … }
static void remove_break_statements(std::unique_ptr<Statement>& stmt) { … }
static bool block_for_case(Statement* caseBlock, SwitchCase* caseToCapture) { … }
std::unique_ptr<Statement> SwitchStatement::Convert(const Context& context,
Position pos,
std::unique_ptr<Expression> value,
ExpressionArray caseValues,
StatementArray caseStatements,
std::unique_ptr<SymbolTable> symbolTable) { … }
std::unique_ptr<Statement> SwitchStatement::Make(const Context& context,
Position pos,
std::unique_ptr<Expression> value,
std::unique_ptr<Statement> caseBlock) { … }
}