/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SKSL_ASTSWITCHSTATEMENT #define SKSL_ASTSWITCHSTATEMENT #include "SkSLASTStatement.h" #include "SkSLASTSwitchCase.h" namespace SkSL { /** * A 'switch' statement. */ struct ASTSwitchStatement : public ASTStatement { ASTSwitchStatement(Position position, std::unique_ptr value, std::vector> cases) : INHERITED(position, kSwitch_Kind) , fValue(std::move(value)) , fCases(std::move(cases)) {} SkString description() const override { SkString result = SkStringPrintf("switch (%s) {\n", + fValue->description().c_str()); for (const auto& c : fCases) { result += c->description(); } result += "}"; return result; } const std::unique_ptr fValue; const std::vector> fCases; typedef ASTStatement INHERITED; }; } // namespace #endif