yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
3ed776159
master
1// slang-fiddle-template.h 2#pragma once 3 4#include "compiler-core/slang-source-loc.h" 5#include "core/slang-list.h" 6#include "core/slang-string.h" 7#include "slang-fiddle-diagnostics.h" 8 9namespace fiddle 10{ 11using namespace Slang ; 12 13class TextTemplateStmt :public RefObject 14{ 15public : 16}; 17 18class TextTemplateScriptStmt :public TextTemplateStmt 19{ 20public : 21UnownedStringSlice scriptSource ; 22}; 23 24class TextTemplateRawStmt :public TextTemplateStmt 25{ 26public : 27// TODO(tfoley): Add a `SourceLoc` here, so 28// that we can emit approriate `#line` directives 29// to the output... 30 31UnownedStringSlice text ; 32}; 33 34class TextTemplateSpliceStmt :public TextTemplateStmt 35{ 36public : 37UnownedStringSlice scriptExprSource ; 38}; 39 40class TextTemplateSeqStmt :public TextTemplateStmt 41{ 42public : 43List < RefPtr < TextTemplateStmt >>stmts ; 44}; 45 46class TextTemplate :public RefObject 47{ 48public : 49/// ID of this template within the enclosing file 50Index id ; 51 52UnownedStringSlice templateStartLine ; 53UnownedStringSlice outputStartLine ; 54UnownedStringSlice endLine ; 55 56UnownedStringSlice templateSource ; 57UnownedStringSlice existingOutputContent ; 58 59RefPtr < TextTemplateStmt > body ; 60}; 61 62class TextTemplateFile :public RefObject 63{ 64public : 65SourceLoc loc ; 66UnownedStringSlice originalFileContent ; 67List < RefPtr < TextTemplate >>textTemplates ; 68}; 69 70RefPtr < TextTemplateFile > parseTextTemplateFile (SourceView * inputSourceView ,DiagnosticSink * sink ); 71 72void generateTextTemplateOutputs ( 73String originalFileName , 74TextTemplateFile * file , 75StringBuilder & builder , 76DiagnosticSink * sink ); 77 78String generateModifiedInputFileForTextTemplates ( 79String templateOutputFileName , 80TextTemplateFile * file , 81DiagnosticSink * sink ); 82}// namespace fiddle