/* * 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_ASTENUM #define SKSL_ASTENUM #include "SkSLASTDeclaration.h" namespace SkSL { struct ASTEnum : public ASTDeclaration { ASTEnum(int offset, StringFragment typeName, std::vector<StringFragment> names, std::vector<std::unique_ptr<ASTExpression>> values) : INHERITED(offset, kEnum_Kind) , fTypeName(typeName) , fNames(std::move(names)) , fValues(std::move(values)) { ASSERT(fNames.size() == fValues.size()); } String description() const override { String result = "enum class " + fTypeName + " {\n"; String separator; for (StringFragment name : fNames) { result += separator + " " + name; separator = ",\n"; } result += "};"; return result; } const StringFragment fTypeName; const std::vector<StringFragment> fNames; const std::vector<std::unique_ptr<ASTExpression>> fValues; typedef ASTDeclaration INHERITED; }; } // namespace #endif