123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /*
- * 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_FIELD
- #define SKSL_FIELD
- #include "src/sksl/SkSLPosition.h"
- #include "src/sksl/ir/SkSLModifiers.h"
- #include "src/sksl/ir/SkSLSymbol.h"
- #include "src/sksl/ir/SkSLType.h"
- #include "src/sksl/ir/SkSLVariable.h"
- namespace SkSL {
- /**
- * A symbol which should be interpreted as a field access. Fields are added to the symboltable
- * whenever a bare reference to an identifier should refer to a struct field; in GLSL, this is the
- * result of declaring anonymous interface blocks.
- */
- struct Field : public Symbol {
- Field(int offset, const Variable& owner, int fieldIndex)
- : INHERITED(offset, kField_Kind, owner.fType.fields()[fieldIndex].fName)
- , fOwner(owner)
- , fFieldIndex(fieldIndex) {}
- virtual String description() const override {
- return fOwner.description() + "." + fOwner.fType.fields()[fFieldIndex].fName;
- }
- const Variable& fOwner;
- const int fFieldIndex;
- typedef Symbol INHERITED;
- };
- } // namespace SkSL
- #endif
|