No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

95 líneas
2.2 KiB

  1. program generator;
  2. {$mode objfpc}{$H+}
  3. uses
  4. {$IFDEF UNIX}{$IFDEF UseCThreads}
  5. cthreads,
  6. {$ENDIF}{$ENDIF}
  7. Classes, SysUtils,
  8. HeaderGenerator
  9. , Vulkan
  10. ;
  11. var
  12. InputFile: String;
  13. OutputFile: String;
  14. TemplateFile: String;
  15. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  16. procedure ParseArg(var i: Integer);
  17. var
  18. s: String;
  19. begin
  20. s := ParamStr(i);
  21. if (s = '-i') or (s = '--input') then begin
  22. inc(i);
  23. if (i > ParamCount) then
  24. raise Exception.Create('invalid argument count');
  25. InputFile := ExpandFileName(ParamStr(i));
  26. end else if (s = '-o') or (s = '--output') then begin
  27. inc(i);
  28. if (i > ParamCount) then
  29. raise Exception.Create('invalid argument count');
  30. OutputFile := ExpandFileName(ParamStr(i));
  31. end else if (s = '-t') or (s = '--template') then begin
  32. inc(i);
  33. if (i > ParamCount) then
  34. raise Exception.Create('invalid argument count');
  35. TemplateFile := ExpandFileName(ParamStr(i));
  36. end else
  37. raise Exception.Create('invalid argument: ' + s);
  38. end;
  39. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  40. procedure ParseArgs;
  41. var
  42. i: Integer;
  43. begin
  44. i := 1;
  45. while i <= ParamCount do begin
  46. ParseArg(i);
  47. inc(i);
  48. end;
  49. end;
  50. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  51. procedure GenerateHeader;
  52. var
  53. gen: THeaderGenerator;
  54. begin
  55. WriteLn('Generating Vulkan Header for PFC', InputFile);
  56. WriteLn(' InputFile: ', InputFile);
  57. WriteLn(' OutputFile: ', OutputFile);
  58. WriteLn(' TemplateFile: ', TemplateFile);
  59. gen := THeaderGenerator.Create;
  60. try
  61. gen.ReadFile(InputFile);
  62. gen.GenerateCode('vulkan', TemplateFile, OutputFile);
  63. finally
  64. FreeAndNil(gen);
  65. end;
  66. end;
  67. begin
  68. try
  69. InputFile := ExtractFilePath(ParamStr(0)) + 'vk.xml';
  70. OutputFile := ExtractFilePath(ParamStr(0)) + 'Vulkan.pas';
  71. TemplateFile := ExtractFilePath(ParamStr(0)) + 'Vulkan.tpl';
  72. ParseArgs;
  73. GenerateHeader;
  74. except
  75. on ex: Exception do begin
  76. WriteLn('Error: ' + ex.Message);
  77. end;
  78. end;
  79. WriteLn('finished!');
  80. ReadLn; // DEBUG!!!
  81. end.