/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SKSL_PROGRAMELEMENT #define SKSL_PROGRAMELEMENT #include "SkSLIRNode.h" namespace SkSL { /** * Represents a top-level element (e.g. function or global variable) in a program. */ struct ProgramElement : public IRNode { enum Kind { kEnum_Kind, kExtension_Kind, kFunction_Kind, kInterfaceBlock_Kind, kModifiers_Kind, kSection_Kind, kVar_Kind }; ProgramElement(int offset, Kind kind) : INHERITED(offset) , fKind(kind) {} Kind fKind; virtual std::unique_ptr<ProgramElement> clone() const = 0; typedef IRNode INHERITED; }; } // namespace #endif