You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.2 KiB

  1. unit uengShaderCodePart;
  2. {$mode objfpc}{$H+}
  3. {$I uengShaderFile.inc}
  4. interface
  5. uses
  6. Classes, SysUtils,
  7. uengShaderPart, uengShaderFileParser, uengShaderGeneratorArgs
  8. {$IFDEF USE_BITSPACE_UTILS}
  9. , uutlGenerics
  10. {$ENDIF}
  11. ;
  12. type
  13. TengShaderCodePart = class(TengShaderPart)
  14. { Code Loading & Storage }
  15. protected
  16. function ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String; virtual;
  17. public
  18. function ParseText(const aArgs: TengParseArgs): String;
  19. { Code Generation }
  20. public
  21. procedure GenerateCodeIntern(const aArgs: TengShaderGeneratorArgs); virtual;
  22. end;
  23. CengShaderCodePart = class of TengShaderCodePart;
  24. TengShaderCodePartList = specialize TutlSimpleList<TengShaderCodePart>;
  25. implementation
  26. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  27. //TengShaderCodePart////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  28. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  29. function TengShaderCodePart.ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String;
  30. begin
  31. result := ''; // DUMMY
  32. end;
  33. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  34. function TengShaderCodePart.ParseText(const aArgs: TengParseArgs): String;
  35. var
  36. params: TengTokenParameterList;
  37. begin
  38. params := TengTokenParameterList.Create(Filename);
  39. try
  40. fCol := aArgs.Col;
  41. fLine := aArgs.Line;
  42. if (GetTokenName <> '') then
  43. aArgs.ExtractToken(self, params);
  44. result := ParseIntern(aArgs, params);
  45. finally
  46. FreeAndNil(params);
  47. end;
  48. end;
  49. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  50. procedure TengShaderCodePart.GenerateCodeIntern(const aArgs: TengShaderGeneratorArgs);
  51. var
  52. s: String;
  53. begin
  54. s := GetTokenName;
  55. if (s <> '') then
  56. aArgs.AddToken(s);
  57. end;
  58. end.