Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 

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