LazyInterface (simplified Boost.Interfaces)
    Andrei Alexandrescu 
    SeeWebsiteForEmail at erdani.org
       
    Thu Sep 23 07:35:06 PDT 2010
    
    
  
On 9/23/10 8:09 CDT, kenji hara wrote:
> I implemented adaptTo .
>
> http://github.com/9rnsr/scrap/blob/master/interfaces/interfaces.d
>
> Kenji Hara
This is great work, Kenji! I'm very glad about this because it uses 
introspection to implement an important feature. Such post-hoc interface 
binding is a core feature in quite a few languages.
If you agree, I am committed to advocate adopting this abstraction for 
Phobos in module std.typecons, with credit.
All - a bit of bikeshedding - what is a better name for adaptTo? I know 
there is a consecrated name for such late matching of an interface, but 
I can't remember it.
A few nits about the implementation:
* In line 73 it looks like you don't support covariance of return types. 
Could you fix that? Example (add it to the unittests, too):
class C
{
   long draw(){ return 10; }
}
interface Drawable
{
   int draw();
}
The override should be legit.
* Throughout: everything that is a value should start with a lowercase 
letter; everything that is not a value (e.g. type, type tuple) should 
start with an uppercase letter. In particular your "result" convention 
should use "Result" for type results and "result" for value results.
* Code shouldn't use uppercase "i" as a symbol name - it's confusable 
with "1".
Congratulations! This is great work indeed.
Thanks,
Andrei
    
    
More information about the Digitalmars-d
mailing list