|
- program generator;
-
- {$mode objfpc}{$H+}
-
- uses
- {$IFDEF UNIX}{$IFDEF UseCThreads}
- cthreads,
- {$ENDIF}{$ENDIF}
- Classes, SysUtils,
- HeaderGenerator
- , Vulkan
- ;
-
- var
- InputFile: String;
- OutputFile: String;
- TemplateFile: String;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure ParseArg(var i: Integer);
- var
- s: String;
- begin
- s := ParamStr(i);
- if (s = '-i') or (s = '--input') then begin
- inc(i);
- if (i > ParamCount) then
- raise Exception.Create('invalid argument count');
- InputFile := ExpandFileName(ParamStr(i));
-
- end else if (s = '-o') or (s = '--output') then begin
- inc(i);
- if (i > ParamCount) then
- raise Exception.Create('invalid argument count');
- OutputFile := ExpandFileName(ParamStr(i));
-
- end else if (s = '-t') or (s = '--template') then begin
- inc(i);
- if (i > ParamCount) then
- raise Exception.Create('invalid argument count');
- TemplateFile := ExpandFileName(ParamStr(i));
-
- end else
- raise Exception.Create('invalid argument: ' + s);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure ParseArgs;
- var
- i: Integer;
- begin
- i := 1;
- while i <= ParamCount do begin
- ParseArg(i);
- inc(i);
- end;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure GenerateHeader;
- var
- gen: THeaderGenerator;
- begin
- WriteLn('Generating Vulkan Header for PFC', InputFile);
- WriteLn(' InputFile: ', InputFile);
- WriteLn(' OutputFile: ', OutputFile);
- WriteLn(' TemplateFile: ', TemplateFile);
-
- gen := THeaderGenerator.Create;
- try
- gen.ReadFile(InputFile);
- gen.GenerateCode('vulkan', TemplateFile, OutputFile);
- finally
- FreeAndNil(gen);
- end;
- end;
-
- begin
- try
- InputFile := ExtractFilePath(ParamStr(0)) + 'vk.xml';
- OutputFile := ExtractFilePath(ParamStr(0)) + 'Vulkan.pas';
- TemplateFile := ExtractFilePath(ParamStr(0)) + 'Vulkan.tpl';
- ParseArgs;
- GenerateHeader;
- except
- on ex: Exception do begin
- WriteLn('Error: ' + ex.Message);
- end;
- end;
-
- WriteLn('finished!');
- ReadLn; // DEBUG!!!
- end.
|