/src/skia/include/private/SkSLIRNode.h
Line | Count | Source |
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_IRNODE |
9 | | #define SKSL_IRNODE |
10 | | |
11 | | #include "include/private/SkSLString.h" |
12 | | #include "include/private/SkTArray.h" |
13 | | #include "src/sksl/SkSLASTNode.h" |
14 | | #include "src/sksl/SkSLLexer.h" |
15 | | #include "src/sksl/SkSLModifiersPool.h" |
16 | | #include "src/sksl/SkSLPool.h" |
17 | | |
18 | | #include <algorithm> |
19 | | #include <atomic> |
20 | | #include <unordered_set> |
21 | | #include <vector> |
22 | | |
23 | | namespace SkSL { |
24 | | |
25 | | class Expression; |
26 | | class FunctionDeclaration; |
27 | | class FunctionDefinition; |
28 | | class Statement; |
29 | | class Symbol; |
30 | | class SymbolTable; |
31 | | class Type; |
32 | | class Variable; |
33 | | class VariableReference; |
34 | | enum class VariableRefKind : int8_t; |
35 | | enum class VariableStorage : int8_t; |
36 | | |
37 | | /** |
38 | | * Represents a node in the intermediate representation (IR) tree. The IR is a fully-resolved |
39 | | * version of the program (all types determined, everything validated), ready for code generation. |
40 | | */ |
41 | | class IRNode : public Poolable { |
42 | | public: |
43 | 112M | virtual ~IRNode() {} |
44 | | |
45 | | virtual String description() const = 0; |
46 | | |
47 | | // No copy construction or assignment |
48 | | IRNode(const IRNode&) = delete; |
49 | | IRNode& operator=(const IRNode&) = delete; |
50 | | |
51 | | // character offset of this element within the program being compiled, for error reporting |
52 | | // purposes |
53 | | int fOffset; |
54 | | |
55 | | protected: |
56 | | IRNode(int offset, int kind) |
57 | | : fOffset(offset) |
58 | 112M | , fKind(kind) {} |
59 | | |
60 | | int fKind; |
61 | | }; |
62 | | |
63 | | } // namespace SkSL |
64 | | |
65 | | #endif |