Wrapping an arbitrary class/struct API
John Colvin
john.loughran.colvin at gmail.com
Sat Aug 24 06:31:45 PDT 2013
On Saturday, 24 August 2013 at 13:14:30 UTC, Joseph Rushton
Wakeling wrote:
> 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
You might want to look at std.typecons.Proxy
also, opDispatch is a very powerful tool for doing this sort of
thing.
More information about the Digitalmars-d-learn
mailing list