This macro might work for you https://github.com/JuliaLang/DataStructures.jl/blob/8422ca9f66bfaa0f257b2bbbc8637c844d49ea68/src/delegate.jl
On Mon, 2016-09-26 at 16:31, Carlo Lucibello <carlo.lucibe...@gmail.com> wrote: > Hi everybody, > I'm looking for a metaprogramming trick to solve the following problem (I'm > confident it can be done efficiently with julia) . Let's say I have defined a > type in a module along with some methods: > module ModA > export A,f1,f2,f3 > > type A > ... > end > > f1(a::A, x::Int) = ... > f2(x, a::A, y) = ... > f3(a1::A,a2::A) = ... > > end #module > Now I have a second type that encapsulate the first > > using ModA > > type B > a::A > ... > end > > and I would like to define a macro that automatically defines all the exported > function in ModA for the type B in the trivial way, that is > > f1(b::B, x::Int) = f1(b.a, x) > f2(x, b::B, y) = f1(x, b.a, y) > f3(b1::B, b2::B) = f1(b1.a, b2.a) > > A starting point could be methodswith(A, ModA), but I don't know how to > procede > further. Suggestions? > > Bye, > Carlo