diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2018-02-01 12:14:34 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-01 18:22:03 +0000 |
commit | 130fb3f7aac19e40eddfc8fa85a9b39e7c99a7e8 (patch) | |
tree | 8daee5ab96a5bdc06e991ff8d1e370c011b6b7a5 /src/sksl | |
parent | 28eaed254dcd73b42c15b73528f349cccd7797e5 (diff) |
updated .fp file headers
Bug: skia:
Change-Id: I9c39622f34e803a706acd04372be569667380661
Reviewed-on: https://skia-review.googlesource.com/102204
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/sksl')
-rw-r--r-- | src/sksl/SkSLCPPCodeGenerator.cpp | 1 | ||||
-rw-r--r-- | src/sksl/SkSLHCodeGenerator.cpp | 18 | ||||
-rw-r--r-- | src/sksl/SkSLHCodeGenerator.h | 16 | ||||
-rw-r--r-- | src/sksl/SkSLParser.h | 1 |
4 files changed, 26 insertions, 10 deletions
diff --git a/src/sksl/SkSLCPPCodeGenerator.cpp b/src/sksl/SkSLCPPCodeGenerator.cpp index d6a6a25eac..7b35ca8f90 100644 --- a/src/sksl/SkSLCPPCodeGenerator.cpp +++ b/src/sksl/SkSLCPPCodeGenerator.cpp @@ -764,6 +764,7 @@ bool CPPCodeGenerator::generateCode() { } const char* baseName = fName.c_str(); const char* fullName = fFullName.c_str(); + this->writef("%s\n", HCodeGenerator::GetHeader(fProgram, fErrors).c_str()); this->writef(kFragmentProcessorHeader, fullName); this->writef("#include \"%s.h\"\n" "#if SK_SUPPORT_GPU\n", fullName); diff --git a/src/sksl/SkSLHCodeGenerator.cpp b/src/sksl/SkSLHCodeGenerator.cpp index 819b85a515..9750aabb87 100644 --- a/src/sksl/SkSLHCodeGenerator.cpp +++ b/src/sksl/SkSLHCodeGenerator.cpp @@ -7,6 +7,7 @@ #include "SkSLHCodeGenerator.h" +#include "SkSLParser.h" #include "SkSLUtil.h" #include "ir/SkSLEnum.h" #include "ir/SkSLFunctionDeclaration.h" @@ -252,7 +253,24 @@ void HCodeGenerator::writeFields() { } } +String HCodeGenerator::GetHeader(const Program& program, ErrorReporter& errors) { + SymbolTable types(&errors); + Parser parser(program.fSource->c_str(), program.fSource->length(), types, errors); + for (;;) { + Token header = parser.nextRawToken(); + switch (header.fKind) { + case Token::WHITESPACE: + break; + case Token::BLOCK_COMMENT: + return String(program.fSource->c_str() + header.fOffset, header.fLength); + default: + return ""; + } + } +} + bool HCodeGenerator::generateCode() { + this->writef("%s\n", GetHeader(fProgram, fErrors).c_str()); this->writef(kFragmentProcessorHeader, fFullName.c_str()); this->writef("#ifndef %s_DEFINED\n" "#define %s_DEFINED\n", diff --git a/src/sksl/SkSLHCodeGenerator.h b/src/sksl/SkSLHCodeGenerator.h index fa5544a0e0..c6031b2779 100644 --- a/src/sksl/SkSLHCodeGenerator.h +++ b/src/sksl/SkSLHCodeGenerator.h @@ -16,16 +16,10 @@ #include <cctype> constexpr const char* kFragmentProcessorHeader = -R"(/* - * Copyright 2017 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/* - * This file was autogenerated from %s.fp; do not modify. - */ +R"( +/************************************************************************************************** + *** This file was autogenerated from %s.fp; do not modify. + **************************************************************************************************/ )"; namespace SkSL { @@ -45,6 +39,8 @@ public: return String::printf("f%c%s", toupper(varName[0]), varName + 1); } + static String GetHeader(const Program& program, ErrorReporter& errors); + private: void writef(const char* s, va_list va) SKSL_PRINTF_LIKE(2, 0); diff --git a/src/sksl/SkSLParser.h b/src/sksl/SkSLParser.h index 51e689ecff..f067c48be9 100644 --- a/src/sksl/SkSLParser.h +++ b/src/sksl/SkSLParser.h @@ -242,6 +242,7 @@ private: ErrorReporter& fErrors; friend class AutoDepth; + friend class HCodeGenerator; }; } // namespace |