diff --git a/applications/gobject-introspection/commandlineoptions.pas b/applications/gobject-introspection/commandlineoptions.pas index 13b6f81ef..4cd4b638e 100644 --- a/applications/gobject-introspection/commandlineoptions.pas +++ b/applications/gobject-introspection/commandlineoptions.pas @@ -46,9 +46,16 @@ type // read from commandline procedure ReadOptions; + // string based function HasOption(AName: String): Boolean; function OptionValue(AName:String): String; function OptionValues(AName: String): TStrings; + + // tag based + function HasOption(AIdentifier: Integer): Boolean; + function OptionValue(AIdentifier: Integer): String; + function OptionValues(AIdentifier: Integer): TStrings; + constructor Create; destructor Destroy; override; function PrintHelp(MaxLineWidth: Integer): TStrings; virtual; @@ -287,6 +294,44 @@ begin Result.Add(S); end; +function TCommandLineOptions.HasOption(AIdentifier: Integer): Boolean; +var + Opt: TOption; +begin + Result := False; + Opt := FindOptionByIdentifier(AIdentifier); + if Opt = nil then + Exit; + + Result := Opt.Present; +end; + +function TCommandLineOptions.OptionValue(AIdentifier: Integer): String; +var + Opt: TOption; +begin + Result := ''; + Opt := FindOptionByIdentifier(AIdentifier); + if Opt = nil then + Exit; + + Result := Opt.Value; +end; + +function TCommandLineOptions.OptionValues(AIdentifier: Integer): TStrings; +var + Opt: TOption; + Tmp: String; +begin + Result := TStringList.Create; + Opt := FindOptionByIdentifier(AIdentifier); + if Opt = nil then + Exit; + + for Tmp in Opt.Values do + Result.Add(Tmp); +end; + constructor TCommandLineOptions.Create; begin FOptions := TObjectList.create(True); diff --git a/applications/gobject-introspection/gir2pascal.lpr b/applications/gobject-introspection/gir2pascal.lpr index cf0c510bc..1dd315fd6 100644 --- a/applications/gobject-introspection/gir2pascal.lpr +++ b/applications/gobject-introspection/gir2pascal.lpr @@ -323,7 +323,12 @@ begin ConsoleWidth:=w.ws_col; {$ENDIF} Writeln('Usage: ',ExtractFileName(ParamStr(0)),' [options] -i filename'); - WriteLn(FCmdOptions.PrintHelp(ConsoleWidth).Text); + with FCmdOptions.PrintHelp(ConsoleWidth) do + begin + WriteLn(Text); + Free; + + end; { Writeln(''); writeln(' Usage: ',ExtractFileName(ParamStr(0)),' [options] -i filename');