/* * 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(int offset, bool isStatic, std::unique_ptr value, std::vector> cases) : INHERITED(offset, kSwitch_Kind) , fIsStatic(isStatic) , fValue(std::move(value)) , fCases(std::move(cases)) {} String description() const override { String result; if (fIsStatic) { result += "@"; } result += String::printf("switch (%s) {\n", fValue->description().c_str()); for (const auto& c : fCases) { result += c->description(); } result += "}"; return result; } bool fIsStatic; const std::unique_ptr fValue; const std::vector> fCases; typedef ASTStatement INHERITED; }; } // namespace #endif