I'm trying to write a small module that allows one to define a Step that
describes operations on an HDF5 file.
immutable Step
func::String
a_ins::(String...) #attribute inputs
d_ins::(String...) #dataset inputs
a_outs::(String...) #attribute outputs
d_outs::(String...) #dataset outputs
end
The idea is to gather up the inputs specified by a_ins and d_ins, pass them
to the function specified by func, and place the outputs in HDF5 datasets
and attributes as specified by a_outs and d_outs. The issues I'm having is
finding the correct function given that it is defined in some other Module.
A minimal example is given by
module Bar
bar(s::String, args...) = eval(parse(s))(args...)
export bar
end
using Bar
foo(s::String, args...) = eval(parse(s))(args...)
baz(x...) = +(x...)
baz(4,5,6)
foo("baz",4,5,6)
bar("baz",4,5,6) # ERROR: baz not defined
One path I can see is that when I create the Step I could pass an actual
function to the constructor. If I knew how to access the fully qualified
name of the function, I could record that instead of just the name. I'm
not sure if that is possible. Any ideas on how I should approach this?
Also I probably shouldn't be using eval(parse(s)) since that opens up the
opportunity for arbitrary code execution.