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