SkSLIntLiteral.h revision f008b0a59f45c0d4bea3e66faf3b01805009ec89
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_INTLITERAL 9#define SKSL_INTLITERAL 10 11#include "SkSLExpression.h" 12 13namespace SkSL { 14 15/** 16 * A literal integer. 17 */ 18struct IntLiteral : public Expression { 19 // FIXME: we will need to revisit this if/when we add full support for both signed and unsigned 20 // 64-bit integers, but for right now an int64_t will hold every value we care about 21 IntLiteral(const Context& context, Position position, int64_t value, const Type* type = nullptr) 22 : INHERITED(position, kIntLiteral_Kind, type ? *type : *context.fInt_Type) 23 , fValue(value) {} 24 25 virtual std::string description() const override { 26 return to_string(fValue); 27 } 28 29 bool isConstant() const override { 30 return true; 31 } 32 33 const int64_t fValue; 34 35 typedef Expression INHERITED; 36}; 37 38} // namespace 39 40#endif 41