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