compile time reflection to runtime reflection
BLS
nanali at nospam-wanadoo.fr
Tue Jul 24 06:34:32 PDT 2007
Reiner Pope schrieb:
Thanks Reiner,
> BLS wrote:
>> Warning: This idea is probabely not a strike of a genius.
>>
>> Simply said : Is Mr. Compiler able to produce a binary file which
>> contains compile time reflection information ? In other words, a file
>> which enable us to create classloader.d
>>
>> To make it very slick I suggest to introduce the keyword : rtf
>> f.i.
>> module Runtime;
>> rtf class A
>> output-> A.drr
>>
>> another idea is version(RTF)
>>
>> Well hopefully this idea is not a complete mess...
>> Bjoern
>>
> I'm afraid I don't entirely understand where you put the rtf... as part
> of the class's declaration?
Yes. rtf means runtime flectioned, indicating that the D compiler should
generate a .drr file.
>
> But I think we already have enough to do it within D -- can't we use
> __traits to find about the types, and generate structs at compile-time
> using struct literals?
>
> So you can make a template which builds up a Member[] array, and then a
> Class[] array (supposing you could list all the classes in a module),
> and then you just write (at global scope)
>
> Class[] allClasses = GenerateRuntimeInfo!(my.module.name);
>
> Now we can access it at runtime!
>
You may know about Frank Benoit s TIOPORT project. A Java to D
translator. One of the major goals of TIOPORT was to translate SWT into
D: Frank did an amazing job, but due to the fact that D has less
(compared to Java) runtime reflection support a simple hello world GUI
SWT programm in D is bloated up to about 12 MB.
My interest in SWT is building a D C/S IDE and a kind of multimedia
Scintilla Control. But without having Java-like, better identical,
Runtime Reflection everything I do now is not worth the effort...
>
> I started writing an example of how it would work, but I'm not too sure
> of the details. But I still think that compile-time reflection is
> enough: lifting information from compile-time to runtime is an easy
> enough operation. The other way is not. :)
>
> -- Reiner
I am very interested to see the code!
But IMO it means that I have to mixin your code into a class in case
that I need Runtime Reflection. Why not letting the compiler do that Job ?
Bjoern
Bjoern
More information about the Digitalmars-d
mailing list