From af19769831f1c4c3b90c85aa9f8851cd8bbf86d5 Mon Sep 17 00:00:00 2001 From: Ethan Nicholas Date: Mon, 27 Feb 2017 13:26:45 -0500 Subject: Re-land of skslc switch support This reverts commit 7d975fc200bbbea991ec4c04c08f3a5ea7b847af. BUG=skia: Change-Id: I57521f7a291a35cfed58d623ea4f8da29582d2c5 Reviewed-on: https://skia-review.googlesource.com/8993 Reviewed-by: Ethan Nicholas Commit-Queue: Ethan Nicholas --- src/sksl/ir/SkSLSwitchCase.h | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/sksl/ir/SkSLSwitchCase.h (limited to 'src/sksl/ir/SkSLSwitchCase.h') diff --git a/src/sksl/ir/SkSLSwitchCase.h b/src/sksl/ir/SkSLSwitchCase.h new file mode 100644 index 0000000000..3f1c3acbd3 --- /dev/null +++ b/src/sksl/ir/SkSLSwitchCase.h @@ -0,0 +1,47 @@ +/* + * 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_SWITCHCASE +#define SKSL_SWITCHCASE + +#include "SkSLStatement.h" + +namespace SkSL { + +/** + * A single case of a 'switch' statement. + */ +struct SwitchCase : public Statement { + SwitchCase(Position position, std::unique_ptr value, + std::vector> statements) + : INHERITED(position, kSwitch_Kind) + , fValue(std::move(value)) + , fStatements(std::move(statements)) {} + + SkString description() const override { + SkString result; + if (fValue) { + result.appendf("case %s:\n", fValue->description().c_str()); + } else { + result += "default:\n"; + } + for (const auto& s : fStatements) { + result += s->description() + "\n"; + } + return result; + } + + // null value implies "default" case + std::unique_ptr fValue; + std::vector> fStatements; + + typedef Statement INHERITED; +}; + +} // namespace + +#endif -- cgit v1.2.3