RE: [ROOT] How to pass parameter into reflection function?

From: Philippe Canal (pcanal@fnal.gov)
Date: Thu Oct 17 2002 - 23:12:58 MEST


Hi,

Since "test" is compiled, CINT can not know anything about local
variable.  Instead you need to create a string containing the
information needed.

For example:

void test()
{
	Double_t p = 100;
      char params[256];
	sprintf(params,"%d",p);
	TMethodCall m("test_func", params);
      if (!m.IsValid()) return;
	m.Execute();
}

Cheers,
Philippe



-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Du, Yifei
Sent: Thursday, October 17, 2002 8:18 AM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] How to pass parameter into reflection function?



Hi,

I try to pass a parameter into a reflection function as following,
"test_func" is a global C function:

void test()
{
	Double_t p = 100;
	TMethodCall m("test_func", "p");
	m.Execute();
}

Both "test" and "test_func" are compiled and linked. However, when I run it
CINT compains "p" is "not defined in current scope".

If I manually execute above 3 lines of "test" function in command line, then
everything's fine, I guess it is because then "p" is global.

So the question is how to pass local variable into a reflectoin function as
parameter in compiled env.


Thanks for any help

YF


<FONT SIZE =
1>**************************************************************************
**
This e-mail and any attachments may contain confidential and privileged
information. If you are not the intended recipient, please notify the sender
immediately by return e-mail, delete this e-mail and destroy any copies. Any
dissemination or use of this information by a person other than the intended
recipient is unauthorized and may be illegal. Unless otherwise stated,
opinions expressed in this e-mail are those of the author and are not
endorsed by the author's employer.</FONT>



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:14 MET