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)