diff options
author | 2017-02-22 17:20:11 -0500 | |
---|---|---|
committer | 2017-02-23 15:30:37 +0000 | |
commit | 2b1e468dabd2ac7bea7ec17740275f4f4aad30c3 (patch) | |
tree | 6cd847e75b45c9f02f2c3f299ca81664434c0f85 /src/sksl/ast/SkSLASTSwitchCase.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/ast/SkSLASTSwitchCase.h')
-rw-r--r-- | src/sksl/ast/SkSLASTSwitchCase.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/sksl/ast/SkSLASTSwitchCase.h b/src/sksl/ast/SkSLASTSwitchCase.h new file mode 100644 index 0000000000..2c0a01c7fa --- /dev/null +++ b/src/sksl/ast/SkSLASTSwitchCase.h @@ -0,0 +1,48 @@ +/* + * 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_ASTSWITCHCASE +#define SKSL_ASTSWITCHCASE + +#include "SkSLASTStatement.h" + +namespace SkSL { + +/** + * A single case of a 'switch' statement. + */ +struct ASTSwitchCase : public ASTStatement { + // a null value means "default:" + ASTSwitchCase(Position position, std::unique_ptr<ASTExpression> value, + std::vector<std::unique_ptr<ASTStatement>> 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 + const std::unique_ptr<ASTExpression> fValue; + const std::vector<std::unique_ptr<ASTStatement>> fStatements; + + typedef ASTStatement INHERITED; +}; + +} // namespace + +#endif |