Chromium Code Reviews| Index: src/sksl/SkSLCompiler.h |
| diff --git a/src/sksl/SkSLCompiler.h b/src/sksl/SkSLCompiler.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8d7e721f24192503824ea6aaacd9ce3e0bab2e1c |
| --- /dev/null |
| +++ b/src/sksl/SkSLCompiler.h |
| @@ -0,0 +1,59 @@ |
| +/* |
| + * Copyright 2016 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef SKSL_COMPILER |
| +#define SKSL_COMPILER |
| + |
| +#include <vector> |
| +#include "ir/SkSLProgram.h" |
| +#include "ir/SkSLSymbolTable.h" |
| +#include "SkSLErrorReporter.h" |
| + |
| +namespace SkSL { |
| + |
| +class IRGenerator; |
| + |
| +/** |
| + * Main compiler entry point. This is a traditional compiler design which first parses the .sksl |
| + * file into an abstract syntax tree (a tree of ASTNodes), then performs semantic analysis to |
| + * produce a Program (a tree of IRNodes), then feeds the Program into a CodeGenerator to produce |
| + * compiled output. |
| + */ |
| +class Compiler : public ErrorReporter { |
| +public: |
| + Compiler(); |
| + |
| + ~Compiler(); |
| + |
| + std::unique_ptr<Program> convertProgram(Program::Kind kind, std::string text); |
|
dogben
2016/06/23 17:43:12
Will input always be a string, or would it make se
|
| + |
| + bool toSPIRV(Program::Kind kind, std::string text, std::ostream& out); |
|
dogben
2016/06/23 17:43:12
nit: wrong indentation
|
| + |
| + bool toSPIRV(Program::Kind kind, std::string text, std::string* out); |
| + |
| + void error(Position position, std::string msg) override; |
| + |
| + std::string errorText(); |
|
dogben
2016/06/23 17:43:12
nit: const?
|
| + |
| + void writeErrorCount(); |
| + |
| +private: |
| + |
| + bool internalConvertProgram(std::string text, |
| + std::vector<std::unique_ptr<ProgramElement>>* result); |
|
dogben
2016/06/23 17:43:12
nit: odd indentation
|
| + |
| + std::shared_ptr<SymbolTable> fTypes; |
| + IRGenerator* fIRGenerator; |
|
dogben
2016/06/23 17:43:12
std::unique_ptr?
|
| + std::string fSkiaVertText; // FIXME store parsed version instead |
| + |
| + int fErrorCount; |
| + std::string fErrorText; |
| +}; |
| + |
| +} // namespace |
| + |
| +#endif |