12 #ifndef ROOT_R_TRInterface
13 #define ROOT_R_TRInterface
137 class TRInterface:
public TObject {
145 Binding(TRInterface *rnt, TString name): fInterface(rnt), fName(name) {}
146 Binding &operator=(
const Binding &obj)
148 fInterface = obj.fInterface;
152 template <
class T> Binding &operator=(
const T &data)
154 fInterface->Assign<T>(data, fName);
157 Binding &operator=(
const TRFunctionExport &fun)
160 fInterface->Assign(fun, fName);
164 Binding &operator<<(
const TRFunctionExport &fun)
167 fInterface->Assign(fun, fName);
171 Binding &operator=(
const TRDataFrame &df)
173 fInterface->Assign(df, fName);
177 Binding &operator<<(
const TRDataFrame &df)
179 fInterface->Assign(df, fName);
183 template <
class T> Binding &operator >>(T &var)
185 var = fInterface->Eval(fName).As<T>();
189 template <
class T> Binding &operator <<(T var)
191 fInterface->Assign<T>(var, fName);
195 template <
class T>
operator T()
197 return fInterface->Eval(fName);
201 TRInterface *fInterface;
214 TRInterface(
const Int_t argc = 0,
const Char_t *argv[] = NULL,
const Bool_t loadRcpp =
true,
215 const Bool_t verbose =
false,
const Bool_t interactive =
true);
225 void SetVerbose(Bool_t status);
232 Int_t Eval(
const TString &code, TRObject &ans);
237 void Execute(
const TString &code);
240 using TObject::Execute;
247 TRObject Eval(
const TString &code);
255 template<
typename T >
void Assign(
const T &var,
const TString &name)
260 fR->assign<T>(var, name.Data());
267 void Assign(
const TRFunctionExport &fun,
const TString &name);
273 void Assign(
const TRDataFrame &df,
const TString &name);
283 void ProcessEventsLoop();
290 Bool_t IsInstalled(TString pkg);
296 Bool_t Require(TString pkg);
303 Bool_t Install(TString pkg, TString repos =
"http://cran.r-project.org");
304 Binding operator[](
const TString &name);
310 static TRInterface &Instance();
315 static TRInterface *InstancePtr();
317 ClassDef(TRInterface, 0)
322 inline ROOT::R::TRInterface &operator<<(ROOT::R::TRInterface &r, TString code)