Quellcode durchsuchen

* fixed some bugs

* added tests
master
Bergmann89 vor 11 Jahren
Ursprung
Commit
95abc62142
5 geänderte Dateien mit 45 neuen und 8 gelöschten Zeilen
  1. +11
    -0
      tests/testfiles/code_General_OrderOfMainProcClassContent.shdr
  2. +11
    -0
      tests/testfiles/result_General_OrderOfMainProcClassContent.shdr
  3. +14
    -0
      tests/uShaderFileTestCase.pas
  4. +6
    -6
      uengShaderGenerator.pas
  5. +3
    -2
      uengShaderGeneratorArgs.pas

+ 11
- 0
tests/testfiles/code_General_OrderOfMainProcClassContent.shdr Datei anzeigen

@@ -0,0 +1,11 @@
{$CLASS TestClass}
/* some code here */
{$PROC TestProc}
gl_FragColor = vec4(1.0);
{$END}
{$MAIN}
{$CALL TestProc};
{$END}
{$END}

+ 11
- 0
tests/testfiles/result_General_OrderOfMainProcClassContent.shdr Datei anzeigen

@@ -0,0 +1,11 @@
/* some code here */

void TestClass_TestProc(void)
{
gl_FragColor = vec4(1.0);
}

void main(void)
{
TestClass_TestProc();
}

+ 14
- 0
tests/uShaderFileTestCase.pas Datei anzeigen

@@ -52,6 +52,11 @@ type
procedure InheritedMain; procedure InheritedMain;
end; end;


TTestCase_General = class(TShaderFileTestCase)
published
procedure OrderOfMainProcClassContent;
end;

implementation implementation


uses uses
@@ -206,11 +211,20 @@ begin
DoTest('code_Class_InheritedMain.shdr', 'SimpleClass', 'result_Class_InheritedMain.shdr'); DoTest('code_Class_InheritedMain.shdr', 'SimpleClass', 'result_Class_InheritedMain.shdr');
end; end;


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//TTestCase_General/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TTestCase_General.OrderOfMainProcClassContent;
begin
DoTest('code_General_OrderOfMainProcClassContent.shdr', 'TestClass', 'result_General_OrderOfMainProcClassContent.shdr');
end;

initialization initialization
RegisterTest(TTestCase_IfElifElseEnd); RegisterTest(TTestCase_IfElifElseEnd);
RegisterTest(TTestCase_FuncProcMain); RegisterTest(TTestCase_FuncProcMain);
RegisterTest(TTestCase_Include); RegisterTest(TTestCase_Include);
RegisterTest(TTestCase_Class); RegisterTest(TTestCase_Class);
RegisterTest(TTestCase_General);


end. end.



+ 6
- 6
uengShaderGenerator.pas Datei anzeigen

@@ -205,7 +205,7 @@ begin
sr := TengSearchResults.Create; sr := TengSearchResults.Create;
walker := TengSearchWalker.Create(sr); walker := TengSearchWalker.Create(sr);
try try
walker.SearchFlags := [sfSearchChildren, sfEvaluateIf];
walker.SearchFlags := [sfSearchChildren, sfEvaluateIf, sfSearchInherited];
walker.ResultTypes := CengShaderPartArr.Create(TengShaderPartMain); walker.ResultTypes := CengShaderPartArr.Create(TengShaderPartMain);
walker.ChildrenDoNotLeave := CengShaderPartArr.Create(TengShaderGenerator); walker.ChildrenDoNotLeave := CengShaderPartArr.Create(TengShaderGenerator);
walker.ChildrenForceLeave := CengShaderPartArr.Create(TengShaderFile); walker.ChildrenForceLeave := CengShaderPartArr.Create(TengShaderFile);
@@ -221,17 +221,17 @@ begin
args.PopFlags; args.PopFlags;
end; end;
end; end;

args.GenerateProcedureCode;
args.GenerateParameterCode(CengShaderPartArr.Create(TengShaderPartVar));
args.GenerateParameterCode(CengShaderPartArr.Create(TengShaderPartVarying));
args.GenerateParameterCode(CengShaderPartArr.Create(TengShaderPartUniform));
finally finally
FreeAndNil(walker); FreeAndNil(walker);
FreeAndNil(sr); FreeAndNil(sr);
args.PopCode([pcfAppend, pcfAddEmptyLine]); args.PopCode([pcfAppend, pcfAddEmptyLine]);
end; end;


args.GenerateProcedureCode;
args.GenerateParameterCode(CengShaderPartArr.Create(TengShaderPartVar));
args.GenerateParameterCode(CengShaderPartArr.Create(TengShaderPartVarying));
args.GenerateParameterCode(CengShaderPartArr.Create(TengShaderPartUniform));

args.PushCode; args.PushCode;
try try
args.GenerateMetaCode; args.GenerateMetaCode;


+ 3
- 2
uengShaderGeneratorArgs.pas Datei anzeigen

@@ -86,7 +86,7 @@ type
private type private type
TCodeStack = specialize TutlSimpleList<TCodeStackItem>; TCodeStack = specialize TutlSimpleList<TCodeStackItem>;
TParameterMap = specialize TutlMap<string, TengShaderPart>; TParameterMap = specialize TutlMap<string, TengShaderPart>;
TProcedureList = specialize TutlSimpleList<TengShaderPart>;
TProcedureList = specialize TutlList<TengShaderPart>;
TProcParamStack = specialize TutlSimpleList<TStrings>; TProcParamStack = specialize TutlSimpleList<TStrings>;


private private
@@ -663,7 +663,8 @@ procedure TengShaderGeneratorArgs.AddProcedure(const aProc: TengShaderPart);
begin begin
if not (aProc is TengShaderPartProc) then if not (aProc is TengShaderPartProc) then
raise EengShaderPartInternal.Create('parameter (' + aProc.ClassName + ') is not a ' + TengShaderPartProc.ClassName, aProc); raise EengShaderPartInternal.Create('parameter (' + aProc.ClassName + ') is not a ' + TengShaderPartProc.ClassName, aProc);
fProcedures.Add(aProc);
if (fProcedures.IndexOf(aProc) < 0) then
fProcedures.Add(aProc);
end; end;


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Laden…
Abbrechen
Speichern