rtl: add a helper method to get TProcedureSignature parameter by index

git-svn-id: trunk@24480 -
This commit is contained in:
paul 2013-05-10 12:41:37 +00:00
parent 756ca5f318
commit 8b98a38b56

View File

@ -21,6 +21,7 @@ unit typinfo;
interface
{$MODE objfpc}
{$MODESWITCH AdvancedRecords}
{$inline on}
{$h+}
@ -155,7 +156,8 @@ unit typinfo;
CC: TCallConv;
ResultType: PTypeInfo;
ParamCount: Byte;
{Params: array[1..ParamCount] of TProcedureParam;}
{Params: array[0..ParamCount - 1] of TProcedureParam;}
function GetParam(ParamIndex: Integer): PProcedureParam;
end;
{$PACKRECORDS C}
@ -2045,4 +2047,18 @@ begin
Result:=IsStoredProp(instance,FindPropInfo(Instance,PropName));
end;
{ TProcedureSignature }
function TProcedureSignature.GetParam(ParamIndex: Integer): PProcedureParam;
begin
if (ParamIndex<0)or(ParamIndex>=ParamCount) then
Exit(nil);
Result := PProcedureParam(PByte(@Flags) + SizeOf(Self));
while ParamIndex > 0 do
begin
Result := PProcedureParam(PByte(@Result^.Name) + (Length(Result^.Name) + 1) * SizeOf(AnsiChar));
dec(ParamIndex);
end;
end;
end.