1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SKSL_TYPEREFERENCE 9 #define SKSL_TYPEREFERENCE 10 11 #include "SkSLContext.h" 12 #include "SkSLExpression.h" 13 14 namespace SkSL { 15 16 /** 17 * Represents an identifier referring to a type. This is an intermediate value: TypeReferences are 18 * always eventually replaced by Constructors in valid programs. 19 */ 20 struct TypeReference : public Expression { TypeReferenceTypeReference21 TypeReference(const Context& context, Position position, const Type& type) 22 : INHERITED(position, kTypeReference_Kind, *context.fInvalid_Type) 23 , fValue(type) {} 24 descriptionTypeReference25 SkString description() const override { 26 return fValue.name(); 27 } 28 29 const Type& fValue; 30 31 typedef Expression INHERITED; 32 }; 33 34 } // namespace 35 36 #endif 37