8393341269f3d6eec5d0662934bdc4aed7c6fec0
[platform/upstream/libSkiaSharp.git] / src / sksl / ir / SkSLProgram.h
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_PROGRAM
9 #define SKSL_PROGRAM
10
11 #include <vector>
12 #include <memory>
13
14 #include "SkSLModifiers.h"
15 #include "SkSLProgramElement.h"
16 #include "SkSLSymbolTable.h"
17
18 namespace SkSL {
19
20 /**
21  * Represents a fully-digested program, ready for code generation.
22  */
23 struct Program {
24     enum Kind {
25         kFragment_Kind,
26         kVertex_Kind
27     };
28
29     Program(Kind kind, 
30             Modifiers::Flag defaultPrecision,
31             std::vector<std::unique_ptr<ProgramElement>> elements, 
32             std::shared_ptr<SymbolTable> symbols)
33     : fKind(kind) 
34     , fDefaultPrecision(defaultPrecision)
35     , fElements(std::move(elements))
36     , fSymbols(symbols) {}
37
38     Kind fKind;
39     // FIXME handle different types; currently it assumes this is for floats
40     Modifiers::Flag fDefaultPrecision;
41     std::vector<std::unique_ptr<ProgramElement>> fElements;
42     std::shared_ptr<SymbolTable> fSymbols;
43 };
44
45 } // namespace
46
47 #endif