Added TRttiIndexedProperty, the whole property handling infrastructure has been significantly redesigned

This commit is contained in:
Lipinast Lekrisov 2024-11-03 18:07:45 +00:00
parent 2596af84fa
commit f7bcabd956
2 changed files with 645 additions and 156 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2066,7 +2066,7 @@ begin
begin
// When passing nil, we just need the count
if Assigned(PropList) then
PropList^[Result]:=TD^.Prop[i];
PropList^[Result]:=TP;
Inc(Result);
end;
end;
@ -2082,7 +2082,7 @@ Function GetRecordPropInfosEx(TypeInfo: PTypeInfo; PropList: PPropListEx; Visibi
Var
TD : PPropDataEx;
TP : PPropListEx;
TP : PPropInfoEx;
Offset,I,Count : Longint;
begin
@ -2090,17 +2090,17 @@ begin
// Clear list
TD:=PRecordData(GetTypeData(TypeInfo))^.ExRTTITable;
Count:=TD^.PropCount;
// Now point TP to first propinfo record.
Inc(Pointer(TP),SizeOF(Word));
tp:=aligntoptr(tp);
For I:=0 to Count-1 do
if ([]=Visibilities) or (PropList^[Result]^.Visibility in Visibilities) then
begin
TP:=TD^.Prop[I];
if ([]=Visibilities) or (TP^.Visibility in Visibilities) then
begin
// When passing nil, we just need the count
if Assigned(PropList) then
PropList^[Result]:=TD^.Prop[i];
PropList^[Result]:=TP;
Inc(Result);
end;
end;
end;
@ -5148,4 +5148,4 @@ begin
end;
{$ENDIF HAVE_INVOKEHELPER}
end.
end.