Here is my prototype COM compile-time reflection based wrapper mixin (which I have abandoned in favor of alias this since it covers 95% of my use cases even though it isn't perfectly safe). I am new at D so you have been warned, though this part of the language seems pretty straightforward enough. It is possible the track down the argument names but takes some rather intricate parsing to do correctly (and the example someone linked me in another thread of mine chocked on const types due to parsing bugs).

http://snipt.org/xsu


The wrapped interface also needs to be a mixin so it can be created in the correct module, with visibility to all the types passed to the interface's methods.


So something like the following is going to fail miserably unless ComPtr is also made into a mixin and instantiated in the correct module.


struct ComPtr(T)
{
public:
    T m_Pointer;
    mixin(WrapComInterface!(T)("m_Pointer")
};


Reply via email to