Wrapping an arbitrary class/struct API

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Sat Aug 24 06:14:21 PDT 2013


Hello all,

(This accidentally got posted as a reply to someone else's thread -- I'm 
reposting in order to make sure that thread doesn't get diverted.)

Suppose that I have a struct like e.g.:

     struct A
     {
         void foo(int n) { ... }
         void foo(Range)(Range r) { ... }
         int bar() { ... }
         int bar(double x) { ... }
         // ... and others ...
     }

... an I want to wrap it in another struct, B.  If I do this manually it would 
be something like,

     struct B
     {
         private A a;
         void foo(int n) { return a.foo(n); }
         void foo(Range)(Range r) { return a.foo(r); }
         // ... etc ...
     }

But suppose that I don't a priori know the list of functions (and function 
arguments) that need to be wrapped.  How could I go about working this out, with 
a generic programming approach, i.e. _without_ manually writing the individual 
cases?

More specifically, how could I work this out limited to a specific function of A 
(say, foo) ... ?

Thanks & best wishes,

     -- Joe


More information about the Digitalmars-d-learn mailing list