diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2017-02-22 17:20:11 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-23 15:30:37 +0000 |
commit | 2b1e468dabd2ac7bea7ec17740275f4f4aad30c3 (patch) | |
tree | 6cd847e75b45c9f02f2c3f299ca81664434c0f85 /src/sksl/ir/SkSLSwitchCase.h | |
parent | 69d4992e69d7b142450d0ccb587b7b26be7cf1ea (diff) |
skslc switch support
BUG=skia:
Change-Id: Ida7f9e80139aa1e4f43804cafbcac640e47fab25
Reviewed-on: https://skia-review.googlesource.com/8771
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Diffstat (limited to 'src/sksl/ir/SkSLSwitchCase.h')
-rw-r--r-- | src/sksl/ir/SkSLSwitchCase.h | 47 |
1 files changed, 47 insertions, 0 deletions
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<Expression> value, + std::vector<std::unique_ptr<Statement>> 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<Expression> fValue; + std::vector<std::unique_ptr<Statement>> fStatements; + + typedef Statement INHERITED; +}; + +} // namespace + +#endif |