<div dir="ltr"><div class="gmail_extra">Hi,</div><div class="gmail_extra"><br></div><div class="gmail_extra">thanks Sven, finally we have initial RTTI.pas version on trunk. Let me start with first serious issue and eventually patch:</div><div class="gmail_extra"><br></div><div class="gmail_extra">function IsManaged(TypeInfo: PTypeInfo): boolean;<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">IsManaged can't work with records because we need know managed fields count (in Delphi when ManagedFldCount is bigger than 0 it means that record has managed fields and problem is solved). Two possible (and IMO correct) solutions:</div><div class="gmail_extra"><br></div><div class="gmail_extra">1. I think it's time to new position in "User Changes" wiki page. We can fix that by new behavior (a more Delphi compatible, more logical, more proper and a little incompatible with old code, but the risk is minimal): ManagedFldCount should be fixed/corrected as mentioned in <a href="http://bugs.freepascal.org/view.php?id=29767">http://bugs.freepascal.org/view.php?id=29767</a> (so it should count *real* managed field as the name "ManagedFldCount" suggests. Otherwise we can't implement this function. Btw. old behavior for ManagedFldCount will be not usefully anymore with RTTI module/improved TypInfo for counting all fields. </div><div class="gmail_extra"><br clear="all"><div>2. <a href="http://bugs.freepascal.org/view.php?id=30687#c96093">http://bugs.freepascal.org/view.php?id=30687#c96093</a> PART 2 of reworked patch for Management Operators should be accepted. With this path we have access to Init RTTI table. Anyway solution 1 is strongly recommended.</div><div><br></div><div>Other "solutions" (IMO totally wrong):</div><div><br></div><div><div>3. New compiler intrinsic routine:</div><div><br></div><div>function IsManagedType(T: Type): Boolean;</div><div><br></div><div>which is no real alternative because IsManaged from RTTI.pas is more run-time dedicated and is impossible to replace IsManaged by IsManagedType for all scenarios. Generally new intrinsic IsManagedType is not wrong but in our context is useless...</div><div><br></div><div> 4. New additional RTTI generated for records, for example new field for TTypeData: <br></div></div><div><br></div><div>ThisIsRealAndNotFakeManagedFldCount: Integer;</div><div><br></div><div>with additional list declared after ManagedFields: array[1..ManagedFldCount] of TManagedField:</div><div><br></div><div>ThisIsRealAndNotFakeManagedFields: array[1..ThisIsRealAndNotFakeManagedFldCount] of TRealAndNotFakeManagedField</div><div><br></div><div>Or some flag in TTypeData for records:</div><div><br></div><div>YesIamManagedRecordAndIHaveRealManagedFieldsAndYesPleaseIgnoreManagedFldCountWhichIsLying: boolean;</div><div><br></div><div>-- <br></div></div><div class="gmail_signature"><div dir="ltr"><div>Best regards,<br>Maciej Izak</div></div></div>
</div>