Class methods in D?

Steven Schveighoffer schveiguy at yahoo.com
Fri May 4 10:29:33 PDT 2012


On Fri, 04 May 2012 13:08:44 -0400, Simon <s.d.hammett at gmail.com> wrote:

> On 04/05/2012 13:27, Steven Schveighoffer wrote:
>> On Fri, 04 May 2012 01:13:07 -0400, Mehrdad <wfunction at hotmail.com>  
>> wrote:
>>
>>> Hmm... how exactly do you use RTInfo? (Is it usable yet? All I see is
>>> a void* and a dummy template.)
>>
>> You have to fill in object.di's RTInfo(T) to be whatever you want. As I
>> said, it's very beta, intended as a hook to use for more precise garbage
>> collection, or any other runtime info goodies you want to put in there.
>> See my example for a hint.
>>
>> Essentially, the compiler's going to do this:
>>
>> class C {...}
>>
>> // compiler: hmmm... have to generate TypeInfo_Class for C. Let me set
>> up all the normal hooks
>>
>> TypeInfo_Class CTypeInfo;
>> CTypeInfo.name = "C";
>> ...
>>
>> // compiler: ok, now let me generate the RTInfo part
>> CTypeInfo.m_rtInfo = RTInfo!C;
>>
>> Now, you can call typeid(instanceOfC).rtInfo and it will give you the
>> data that comes from RTInfo!C. And you don't have to know the type of
>> instanceOfC, it could be Object. It's essentially a way to convert
>> compile-time data into runtime data.
>>
>> -Steve
>
> If you do that, won't anybody who wants to use the code have to have the  
> same hacks to object di?
>
> If so that's not going to be give anything that's either portable or  
> reusable.

I think we can construct a way to have the type generate part of the data  
without having to alter object.di's template.

See my previous example for a possible way to do this.

-Steve


More information about the Digitalmars-d mailing list