| 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);
|
| +
|
| + bool toSPIRV(Program::Kind kind, std::string text, std::ostream& out);
|
| +
|
| + bool toSPIRV(Program::Kind kind, std::string text, std::string* out);
|
| +
|
| + void error(Position position, std::string msg) override;
|
| +
|
| + std::string errorText();
|
| +
|
| + void writeErrorCount();
|
| +
|
| +private:
|
| +
|
| + bool internalConvertProgram(std::string text,
|
| + std::vector<std::unique_ptr<ProgramElement>>* result);
|
| +
|
| + std::shared_ptr<SymbolTable> fTypes;
|
| + IRGenerator* fIRGenerator;
|
| + std::string fSkiaVertText; // FIXME store parsed version instead
|
| +
|
| + int fErrorCount;
|
| + std::string fErrorText;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +#endif
|
|
|