Head Const
Daniel Murphy via Digitalmars-d
digitalmars-d at puremagic.com
Wed Feb 17 22:49:34 PST 2016
On 16/02/2016 8:29 PM, Ola Fosheim Grøstad wrote:
>
> I agree with the principle, but not as a library function, because:
>
> 1. you want virtual functions to work out ok
virtual functions don't even need mangling. But even if they did it
would work just fine anyway.
>
> 2. making D more reliant on macroish string processing is not good
>
It's not macroish string processing, it's embedding a subset of C++
declarations like a DSL. The difference is that the C++ can be fully
type-checked and semantically analysed, errors will not leak into the
generated source.
>
> You would need something along the lines of:
>
> 1. «extern "C++"» the essence of the class definition in plain C++ syntax
>
> 2. add to this syntax a translation for each parameter what it means in D.
>
>
> E.g.
>
> extern "C++" {
>
> class X {
> mutable int rc;
> virtual func1(const A* ptr); @reinterpret(ptr, head_const_ptr!A)
> virtual func2(const A* ptr); @reinterpret(ptr, const A*)
> virtual func3(A* ptr);
> virtual func4(const A* ptr); @reinterpret(ptr, const_rc!A*)
> };
>
> }
>
We don't 'need' compiler support beyond what we have, for any of this.
More information about the Digitalmars-d
mailing list