[fpc-pascal] Unrelated type helpers with the same members? Implement an interface with a type helper?

Michael Van Canneyt michael at freepascal.org
Fri Dec 23 16:33:06 CET 2022



On Fri, 23 Dec 2022, Sven Barth wrote:

> Michael Van Canneyt via fpc-pascal <fpc-pascal at lists.freepascal.org>
> schrieb am Fr., 23. Dez. 2022, 10:48:
>
>>
>>
>> On Fri, 23 Dec 2022, Sven Barth via fpc-pascal wrote:
>>
>>> Michael Van Canneyt via fpc-pascal <fpc-pascal at lists.freepascal.org>
>>> schrieb am Fr., 23. Dez. 2022, 08:18:
>>>
>>>>
>>>>
>>>> On Thu, 22 Dec 2022, Andrew Haines via fpc-pascal wrote:
>>>>
>>>>> Hi what I want to do is similar to this question here:
>>>>>
>>>>
>> https://en.delphipraxis.net/topic/423-rtti-determine-record-helper-type-for-a-base-type/
>>>>>
>>>>> I am going to create multiple type helpers for enums and I would like
>> to
>>>> look
>>>>> up the helper and use common methods AsString AsOrdinal to get/set the
>>>>> values. I am recieving them as json that I dont have control over. I am
>>>> using
>>>>> typeinfo to fill in all the properties but I would like to convert the
>>>>> strings I am receiving to the enum values semi-automatically.
>>>>>
>>>>> LString := 'STATUS';
>>>>>
>>>>> LHelper := GetHelper(LPropInfo^.PropType); // enum proptype
>>>>
>>>> Since there can be multiple type helpers for a type, this will never be
>>>> possible. At best you would get a list.
>>>>
>>>> But I don't think there is even a list of type helpers per type.
>>>> Sven will need to confirm.
>>>>
>>>
>>> As the active helper(s) for a type change(s) depending on the current
>> scope
>>> (e.g. in unit A it might be a different helper than in unit B) this is
>> not
>>> possible. Also helpers are not in any way usable on their own except to
>>> retrieve their RTTI information.
>>
>> But theoretically it should be possible to generate and get a list of all
>> defined type helpers, whether they are in scope or not ?
>>
>
> No, because the compiler doesn't keep track of that. It's only interested
> in what is in scope *right now*.

I understand such a list is not kept now. 
That's why I said "theoretically" as in "it is possible to add to the compiler"

To be clear:
I don't think you should add such a list, I'm simply interested in the possibility 
of such a thing.

Michael.


More information about the fpc-pascal mailing list