Hi Ruben, You can do this via the class TMethodCall. For an example of use, see one of the constructors for TF1: TF1(const char *name, void *fcn, Double_t xmin, Double_t xmax, Int_t npar); In the source, look at the bottom of the function for the following lines: if (!fcn) return; char *funcname = G__p2f2funcname(fcn); SetTitle(funcname); if (funcname) { fMethodCall = new TMethodCall(); fMethodCall->InitWithPrototype(funcname,"Double_t*,Double_t*"); fNumber = -1; } else { Printf("Function:%s cannot be compiled",name); } then look at TF1::EvalPar to see how to call the function from the compiled code: Rene Brun On Sun, 24 Feb 2002, Ruben Shahoian wrote: > Hello, > is there any possibility to get the pointer on the function, loaded as > a macro by CINT? > I need to execute from main program (not a macros!) the user defined > function supplied as a macros (at program compliation time the macros name > is not defined yet. I imagine comething like this: > > MyClass { > ... > void Init(); > void UseMacro(); > > protected: > void (*fUserMacro)(Int_t); // pointer on function from user, > // takes 1 integer argument > TString fUserMacroName; // name of the user macro > ... > } > > MyClass::Init() > { > ... > fUserMacro = 0; > fUserMacroName ++ = "++"; // to call in compiled mode > gROOT->LoadMacro(fUserMacroName.Data()); > fUserMacro = ?????? GET_POINTER_ON_LOADED_AND_COMPILED_FUNCTION ??? > ... > } > > MyClass::UseMacro() > { > ... > fUserMacro(val1) > ... > fUserMacro(val2) > > ... etc > > } > > If this is not possible, are there any workarounds? > > Regards, > Ruben Shahoyan >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:42 MET