Currently typeid(typeid(Interface)) == typeid(ClassInfo). So the interfaces are using a class's type info, which doesn't make much sense considering the aforementioned interface logic. If interfaces get their own type info (like one without a "base" member), it might have an a member called "objectType", which would be of type ClassInfo and would be null if the interface is not a class object. then the interface would be perfectly comparable with other interface types and in case it happens to be a class object, that could be tested too. And with some more info, the offset of the interface could be retrieved to compute the object's this reference (all in case it is indeed a class object).<div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, Dec 3, 2012 at 9:58 AM, Walter Bright <span dir="ltr"><<a href="mailto:newshound2@digitalmars.com" target="_blank">newshound2@digitalmars.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 12/3/2012 4:43 PM, Gor Gyolchanyan wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Wouldn't it be better to return the class's typeinfo if it is a class<br>
and the interface's typeinfo if it isn't? The interface would then<br>
return the most derived typeinfo that it knows of. I think, just because<br>
the interface can be something other then a class object, doesn't mean<br>
it should be treated as though it will never be a class object.<br>
</blockquote>
<br></div>
A particular interface can be implemented by many different class types, or by something that isn't even a class, so returning a typeid that's a class typeid would make it impossible to compare one with another.<br>

<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Bye,<br>Gor Gyolchanyan.<br>
</div>