On Friday, 28 August 2015 at 06:19:55 UTC, Jacob Carlborg wrote:
Is it possible to detect at compile time if an interface is not a native D interface?

Not fully, no, but you might be able to reflect into the methods and see what kind of linkage they have.

http://dlang.org/phobos/std_traits.html#functionLinkage

The interface itself won't necessarily be marked extern - on the binary level, they are all the same (I think... just a pointer to a list of function pointers), but if you look at the methods you can make a reasonably good guess.

However, you can't do anything with an interface that isn't in there anyway without a runtime cast, so you might want to just skip any compile time guesses and just go with the runtime check.

Now when I think about it, we actually have four (!) different kinds of interfaces. Native D, C++, Objective-C and COM.

aye, and since the interface is so simple at the binary level, it is possible to use them for other things too (I think a glib object in C is also binary compatible...); I'm sure this won't be the end of the list.

Reply via email to