Browse Source

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

Lipinast Lekrisov 9 months ago
parent
commit
f7bcabd956
2 changed files with 623 additions and 153 deletions
  1. 615 145
      packages/rtl-objpas/src/inc/rtti.pp
  2. 8 8
      rtl/objpas/typinfo.pp

File diff suppressed because it is too large
+ 615 - 145
packages/rtl-objpas/src/inc/rtti.pp


+ 8 - 8
rtl/objpas/typinfo.pp

@@ -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.

Some files were not shown because too many files changed in this diff