From 954498a40afb55e28c2fe1ed09bad56648fdb6f7 Mon Sep 17 00:00:00 2001
From: Jonas Rembser
Date: Tue, 2 Jun 2026 17:03:49 +0200
Subject: [PATCH] Remove R programming language interface that was deprecated
in 6.40
Remove R programming language interface that was deprecated in 6.40 and
scheduled for removal in 6.42.
---
.../buildconfig/alma10-benchmark.txt | 1 -
.../buildconfig/alma10-clang_ninja.txt | 1 -
.../root-ci-config/buildconfig/alma10.txt | 1 -
.../root-ci-config/buildconfig/global.txt | 2 -
.../root-ci-config/buildconfig/mac-beta.txt | 1 -
.../root-ci-config/buildconfig/mac14.txt | 1 -
.../root-ci-config/buildconfig/mac15.txt | 1 -
.../root-ci-config/buildconfig/mac26.txt | 1 -
.../buildconfig/opensuse16-march_native.txt | 1 -
.../root-ci-config/buildconfig/ubuntu22.txt | 1 -
.../root-ci-config/buildconfig/windows10.txt | 1 -
README/ReleaseNotes/v642/index.md | 1 +
bindings/CMakeLists.txt | 4 -
bindings/r/CMakeLists.txt | 50 -
bindings/r/TODO | 7 -
.../r/doc/users-guide/ROOTR_Users_Guide.md | 853 ----------------
.../r/doc/users-guide/img/interpolation.png | Bin 42130 -> 0 bytes
bindings/r/doc/users-guide/img/logo.jpeg | Bin 69018 -> 0 bytes
.../r/doc/users-guide/img/minimization.jpeg | Bin 50282 -> 0 bytes
bindings/r/doc/users-guide/img/simplefit.gif | Bin 12814 -> 0 bytes
bindings/r/inc/LinkDef.h | 32 -
bindings/r/inc/RExports.h | 195 ----
bindings/r/inc/TRDataFrame.h | 443 ---------
bindings/r/inc/TRDataFrame__ctors.h | 156 ---
bindings/r/inc/TRFunctionExport.h | 189 ----
bindings/r/inc/TRFunctionImport.h | 179 ----
bindings/r/inc/TRFunctionImport__oprtr.h | 133 ---
bindings/r/inc/TRInterface.h | 328 ------
bindings/r/inc/TRInterface_Binding.h | 940 ------------------
bindings/r/inc/TRInternalFunction.h | 64 --
bindings/r/inc/TRInternalFunction__ctors.h | 607 -----------
bindings/r/inc/TRObject.h | 200 ----
bindings/r/src/RExports.cxx | 118 ---
bindings/r/src/TRCompletion.cxx | 94 --
bindings/r/src/TRCompletion.h | 49 -
bindings/r/src/TRDataFrame.cxx | 31 -
bindings/r/src/TRFunctionExport.cxx | 26 -
bindings/r/src/TRFunctionImport.cxx | 51 -
bindings/r/src/TRInterface.cxx | 300 ------
bindings/r/src/TRObject.cxx | 27 -
bindings/r/tests/Binding.C | 149 ---
bindings/r/tests/Class.C | 38 -
bindings/r/tests/DataFrame.C | 115 ---
bindings/r/tests/Exception.C | 22 -
bindings/r/tests/ExpClass.C | 52 -
bindings/r/tests/FunModule.C | 22 -
bindings/r/tests/Functions.C | 121 ---
bindings/r/tests/Functor.C | 35 -
bindings/r/tests/Object.C | 30 -
bindings/r/tests/Proxy.C | 65 --
bindings/r/tests/ROOTR.C | 38 -
bindings/r/tests/TRF1.R | 13 -
cmake/modules/RootBuildOptions.cmake | 6 +-
cmake/modules/RootConfiguration.cmake | 5 -
cmake/modules/SearchInstalledSoftware.cmake | 26 +-
cmake/unix/makepchinput.py | 3 +-
config/RConfigure.in | 1 -
math/CMakeLists.txt | 4 -
math/rtools/CMakeLists.txt | 27 -
math/rtools/inc/LinkDef.h | 8 -
math/rtools/inc/Math/RMinimizer.h | 89 --
math/rtools/src/RMinimizer.cxx | 182 ----
tmva/CMakeLists.txt | 5 -
tmva/rmva/CMakeLists.txt | 32 -
tmva/rmva/inc/LinkDef.h | 19 -
tmva/rmva/inc/TMVA/MethodC50.h | 117 ---
tmva/rmva/inc/TMVA/MethodRSNNS.h | 123 ---
tmva/rmva/inc/TMVA/MethodRSVM.h | 138 ---
tmva/rmva/inc/TMVA/MethodRXGB.h | 112 ---
tmva/rmva/inc/TMVA/RMethodBase.h | 87 --
tmva/rmva/src/MethodC50.cxx | 340 -------
tmva/rmva/src/MethodRSNNS.cxx | 365 -------
tmva/rmva/src/MethodRSVM.cxx | 388 --------
tmva/rmva/src/MethodRXGB.cxx | 282 ------
tmva/rmva/src/RMethodBase.cxx | 111 ---
tmva/rmva/test/Classification.C | 109 --
tutorials/CMakeLists.txt | 5 -
tutorials/math/r/DataFrame.C | 74 --
tutorials/math/r/Function.C | 57 --
tutorials/math/r/Functor.C | 86 --
tutorials/math/r/GlobalMinimization.C | 109 --
tutorials/math/r/Integration.C | 59 --
tutorials/math/r/Interpolation.C | 75 --
tutorials/math/r/Minimization.C | 71 --
tutorials/math/r/SimpleFitting.C | 84 --
tutorials/math/r/example.C | 67 --
86 files changed, 5 insertions(+), 9050 deletions(-)
delete mode 100644 bindings/r/CMakeLists.txt
delete mode 100644 bindings/r/TODO
delete mode 100644 bindings/r/doc/users-guide/ROOTR_Users_Guide.md
delete mode 100644 bindings/r/doc/users-guide/img/interpolation.png
delete mode 100644 bindings/r/doc/users-guide/img/logo.jpeg
delete mode 100644 bindings/r/doc/users-guide/img/minimization.jpeg
delete mode 100644 bindings/r/doc/users-guide/img/simplefit.gif
delete mode 100644 bindings/r/inc/LinkDef.h
delete mode 100644 bindings/r/inc/RExports.h
delete mode 100644 bindings/r/inc/TRDataFrame.h
delete mode 100644 bindings/r/inc/TRDataFrame__ctors.h
delete mode 100644 bindings/r/inc/TRFunctionExport.h
delete mode 100644 bindings/r/inc/TRFunctionImport.h
delete mode 100644 bindings/r/inc/TRFunctionImport__oprtr.h
delete mode 100644 bindings/r/inc/TRInterface.h
delete mode 100644 bindings/r/inc/TRInterface_Binding.h
delete mode 100644 bindings/r/inc/TRInternalFunction.h
delete mode 100644 bindings/r/inc/TRInternalFunction__ctors.h
delete mode 100644 bindings/r/inc/TRObject.h
delete mode 100644 bindings/r/src/RExports.cxx
delete mode 100644 bindings/r/src/TRCompletion.cxx
delete mode 100644 bindings/r/src/TRCompletion.h
delete mode 100644 bindings/r/src/TRDataFrame.cxx
delete mode 100644 bindings/r/src/TRFunctionExport.cxx
delete mode 100644 bindings/r/src/TRFunctionImport.cxx
delete mode 100644 bindings/r/src/TRInterface.cxx
delete mode 100644 bindings/r/src/TRObject.cxx
delete mode 100644 bindings/r/tests/Binding.C
delete mode 100644 bindings/r/tests/Class.C
delete mode 100644 bindings/r/tests/DataFrame.C
delete mode 100644 bindings/r/tests/Exception.C
delete mode 100644 bindings/r/tests/ExpClass.C
delete mode 100644 bindings/r/tests/FunModule.C
delete mode 100644 bindings/r/tests/Functions.C
delete mode 100644 bindings/r/tests/Functor.C
delete mode 100644 bindings/r/tests/Object.C
delete mode 100644 bindings/r/tests/Proxy.C
delete mode 100644 bindings/r/tests/ROOTR.C
delete mode 100644 bindings/r/tests/TRF1.R
delete mode 100644 math/rtools/CMakeLists.txt
delete mode 100644 math/rtools/inc/LinkDef.h
delete mode 100644 math/rtools/inc/Math/RMinimizer.h
delete mode 100644 math/rtools/src/RMinimizer.cxx
delete mode 100644 tmva/rmva/CMakeLists.txt
delete mode 100644 tmva/rmva/inc/LinkDef.h
delete mode 100644 tmva/rmva/inc/TMVA/MethodC50.h
delete mode 100644 tmva/rmva/inc/TMVA/MethodRSNNS.h
delete mode 100644 tmva/rmva/inc/TMVA/MethodRSVM.h
delete mode 100644 tmva/rmva/inc/TMVA/MethodRXGB.h
delete mode 100644 tmva/rmva/inc/TMVA/RMethodBase.h
delete mode 100644 tmva/rmva/src/MethodC50.cxx
delete mode 100644 tmva/rmva/src/MethodRSNNS.cxx
delete mode 100644 tmva/rmva/src/MethodRSVM.cxx
delete mode 100644 tmva/rmva/src/MethodRXGB.cxx
delete mode 100644 tmva/rmva/src/RMethodBase.cxx
delete mode 100644 tmva/rmva/test/Classification.C
delete mode 100644 tutorials/math/r/DataFrame.C
delete mode 100644 tutorials/math/r/Function.C
delete mode 100644 tutorials/math/r/Functor.C
delete mode 100644 tutorials/math/r/GlobalMinimization.C
delete mode 100644 tutorials/math/r/Integration.C
delete mode 100644 tutorials/math/r/Interpolation.C
delete mode 100644 tutorials/math/r/Minimization.C
delete mode 100644 tutorials/math/r/SimpleFitting.C
delete mode 100644 tutorials/math/r/example.C
diff --git a/.github/workflows/root-ci-config/buildconfig/alma10-benchmark.txt b/.github/workflows/root-ci-config/buildconfig/alma10-benchmark.txt
index ce7742559e68f..5033c803b0c0a 100644
--- a/.github/workflows/root-ci-config/buildconfig/alma10-benchmark.txt
+++ b/.github/workflows/root-ci-config/buildconfig/alma10-benchmark.txt
@@ -1,5 +1,4 @@
CMAKE_CXX_STANDARD=20
builtin_vdt=ON
pythia8=ON
-r=OFF
rootbench=ON
diff --git a/.github/workflows/root-ci-config/buildconfig/alma10-clang_ninja.txt b/.github/workflows/root-ci-config/buildconfig/alma10-clang_ninja.txt
index 560ed0afb6ee0..a970b4b2e1d25 100644
--- a/.github/workflows/root-ci-config/buildconfig/alma10-clang_ninja.txt
+++ b/.github/workflows/root-ci-config/buildconfig/alma10-clang_ninja.txt
@@ -20,5 +20,4 @@ builtin_xxhash=ON
builtin_zlib=ON
builtin_zstd=ON
pythia8=ON
-r=OFF
soversion=ON
diff --git a/.github/workflows/root-ci-config/buildconfig/alma10.txt b/.github/workflows/root-ci-config/buildconfig/alma10.txt
index f265d40f10e5a..30497871ebde5 100644
--- a/.github/workflows/root-ci-config/buildconfig/alma10.txt
+++ b/.github/workflows/root-ci-config/buildconfig/alma10.txt
@@ -1,3 +1,2 @@
builtin_vdt=ON
pythia8=ON
-r=OFF
diff --git a/.github/workflows/root-ci-config/buildconfig/global.txt b/.github/workflows/root-ci-config/buildconfig/global.txt
index 91b34924b26f0..4e598d6afa5ed 100644
--- a/.github/workflows/root-ci-config/buildconfig/global.txt
+++ b/.github/workflows/root-ci-config/buildconfig/global.txt
@@ -63,7 +63,6 @@ opengl=ON
pyroot=ON
pythia8=OFF
qt6web=OFF
-r=ON
roofit=ON
roofit_multiprocess=OFF
root7=ON
@@ -83,7 +82,6 @@ tmva-cpu=ON
tmva-gpu=OFF
tmva-cudnn=OFF
tmva-pymva=OFF
-tmva-rmva=OFF
tmva-sofie=ON
tmva=ON
unfold=ON
diff --git a/.github/workflows/root-ci-config/buildconfig/mac-beta.txt b/.github/workflows/root-ci-config/buildconfig/mac-beta.txt
index 8fa352a9bf042..9b29374d539eb 100644
--- a/.github/workflows/root-ci-config/buildconfig/mac-beta.txt
+++ b/.github/workflows/root-ci-config/buildconfig/mac-beta.txt
@@ -22,6 +22,5 @@ check_connection=ON
cocoa=ON
davix=OFF
minuit2_omp=OFF
-r=OFF
tmva-sofie=OFF
x11=OFF
diff --git a/.github/workflows/root-ci-config/buildconfig/mac14.txt b/.github/workflows/root-ci-config/buildconfig/mac14.txt
index c5bfe2f8f8702..1a203c9336cc5 100644
--- a/.github/workflows/root-ci-config/buildconfig/mac14.txt
+++ b/.github/workflows/root-ci-config/buildconfig/mac14.txt
@@ -25,7 +25,6 @@ cocoa=ON
davix=OFF
fortran=OFF
minuit2_omp=OFF
-r=OFF
test_distrdf_dask=OFF
test_distrdf_pyspark=OFF
x11=OFF
diff --git a/.github/workflows/root-ci-config/buildconfig/mac15.txt b/.github/workflows/root-ci-config/buildconfig/mac15.txt
index 656b40f6eb6f5..d16d25feaf528 100644
--- a/.github/workflows/root-ci-config/buildconfig/mac15.txt
+++ b/.github/workflows/root-ci-config/buildconfig/mac15.txt
@@ -20,5 +20,4 @@ builtin_zstd=ON
cocoa=ON
davix=OFF
minuit2_omp=OFF
-r=OFF
x11=OFF
diff --git a/.github/workflows/root-ci-config/buildconfig/mac26.txt b/.github/workflows/root-ci-config/buildconfig/mac26.txt
index 8fa352a9bf042..9b29374d539eb 100644
--- a/.github/workflows/root-ci-config/buildconfig/mac26.txt
+++ b/.github/workflows/root-ci-config/buildconfig/mac26.txt
@@ -22,6 +22,5 @@ check_connection=ON
cocoa=ON
davix=OFF
minuit2_omp=OFF
-r=OFF
tmva-sofie=OFF
x11=OFF
diff --git a/.github/workflows/root-ci-config/buildconfig/opensuse16-march_native.txt b/.github/workflows/root-ci-config/buildconfig/opensuse16-march_native.txt
index 92db1d48e403f..84a16099e3d59 100644
--- a/.github/workflows/root-ci-config/buildconfig/opensuse16-march_native.txt
+++ b/.github/workflows/root-ci-config/buildconfig/opensuse16-march_native.txt
@@ -11,4 +11,3 @@ test_distrdf_pyspark=OFF
tmva-pymva=ON
tmva-sofie=ON
pythia8=OFF
-r=OFF
diff --git a/.github/workflows/root-ci-config/buildconfig/ubuntu22.txt b/.github/workflows/root-ci-config/buildconfig/ubuntu22.txt
index e41a034320598..e0efc61fe89f0 100644
--- a/.github/workflows/root-ci-config/buildconfig/ubuntu22.txt
+++ b/.github/workflows/root-ci-config/buildconfig/ubuntu22.txt
@@ -1,5 +1,4 @@
builtin_unuran=ON
builtin_vdt=ON
-r=ON
test_distrdf_dask=OFF
test_distrdf_pyspark=OFF
diff --git a/.github/workflows/root-ci-config/buildconfig/windows10.txt b/.github/workflows/root-ci-config/buildconfig/windows10.txt
index 5eaa076ea38a4..f0e25365d4838 100644
--- a/.github/workflows/root-ci-config/buildconfig/windows10.txt
+++ b/.github/workflows/root-ci-config/buildconfig/windows10.txt
@@ -25,7 +25,6 @@ minuit2_mpi=OFF
minuit2_omp=OFF
pyroot2=OFF
pyroot3=ON
-r=OFF
runtime_cxxmodules=OFF
ssl=OFF
test_distrdf_dask=OFF
diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md
index c83e470f61933..d04da9e29395c 100644
--- a/README/ReleaseNotes/v642/index.md
+++ b/README/ReleaseNotes/v642/index.md
@@ -45,6 +45,7 @@ The following people have contributed to this new version:
* The `builtin_zeromq` and `builtin_cppzmq` build options that were deprecated in ROOT 6.40 are now removed.
* The ROOT **auth** package together with `TVirtualAuth` and `TROOT::GetListOfSecContexts()`, and the **authenticated sockets** (`TSocket::CreateAuthSocket()`) feature are now removed following deprecation in ROOT 6.40.
* The `TSSLSocket` class is now removed following deprecation in ROOT 6.40.
+* The bindings to the R programming language that are enabled with the `r=ON` or `tmva-rmva=ON` build options (`TRInterface`, RMVA, and friends) are removed, following deprecation in ROOT 6.40. Their maintenance is no longer justified, given the broader adoption of the scientific Python ecosystem. Users who still rely on R from C++ are encouraged to call R directly via https://cran.r-project.org/package=RInside, which is what the ROOT bindings were using internally.
## Python Interface
diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt
index c6c76642fa61c..2ce67833d2adc 100644
--- a/bindings/CMakeLists.txt
+++ b/bindings/CMakeLists.txt
@@ -19,7 +19,3 @@ endif()
if(tpython)
add_subdirectory(tpython)
endif()
-
-if(r)
- add_subdirectory(r)
-endif()
diff --git a/bindings/r/CMakeLists.txt b/bindings/r/CMakeLists.txt
deleted file mode 100644
index f899a8987446d..0000000000000
--- a/bindings/r/CMakeLists.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.
-# All rights reserved.
-#
-# For the licensing terms see $ROOTSYS/LICENSE.
-# For the list of contributors see $ROOTSYS/README/CREDITS.
-
-############################################################################
-# CMakeLists.txt file for building ROOT R package
-############################################################################
-
-ROOT_STANDARD_LIBRARY_PACKAGE(RInterface
- HEADERS
- RExports.h
- TRDataFrame.h
- TRFunctionExport.h
- TRFunctionImport.h
- TRInterface.h
- TRInternalFunction.h
- TRObject.h
- SOURCES
- src/RExports.cxx
- src/TRCompletion.cxx
- src/TRDataFrame.cxx
- src/TRFunctionExport.cxx
- src/TRFunctionImport.cxx
- src/TRInterface.cxx
- src/TRObject.cxx
- DEPENDENCIES
- Core
- Matrix
- RIO
- Thread
- NO_CXXMODULE
-)
-
-ROOT_ADD_CXX_FLAG(_R_FLAGS -Wno-cast-function-type)
-ROOT_ADD_CXX_FLAG(_R_FLAGS -Wno-overloaded-virtual)
-if(x11)
- ROOT_ADD_CXX_FLAG(_R_FLAGS -DHAS_X11)
-endif()
-
-separate_arguments(_R_FLAGS)
-
-target_compile_options(RInterface PUBLIC ${_R_FLAGS})
-target_include_directories(RInterface SYSTEM BEFORE PUBLIC ${R_INCLUDE_DIRS})
-if(x11)
- target_link_libraries(RInterface PUBLIC ${R_LIBRARIES} ${X11_LIBRARIES} readline)
-else()
- target_link_libraries(RInterface PUBLIC ${R_LIBRARIES} readline)
-endif()
diff --git a/bindings/r/TODO b/bindings/r/TODO
deleted file mode 100644
index f63546f1329df..0000000000000
--- a/bindings/r/TODO
+++ /dev/null
@@ -1,7 +0,0 @@
-TRDataFrame
-- overload [][]
-- method to remove col
-- method to get row
-- methods to get sub dataframes
-- implement error handling (exceptions are terminating the application)
-- Users guide section
diff --git a/bindings/r/doc/users-guide/ROOTR_Users_Guide.md b/bindings/r/doc/users-guide/ROOTR_Users_Guide.md
deleted file mode 100644
index 76690dd432049..0000000000000
--- a/bindings/r/doc/users-guide/ROOTR_Users_Guide.md
+++ /dev/null
@@ -1,853 +0,0 @@
-# ROOTR Users Guide
-
-## DESCRIPTION
-ROOT R is an interface in ROOT to call R functions using an R C++ interface (Rcpp, see http://dirk.eddelbuettel.com/code/rcpp.html).
-This interface opens the possibility in ROOT to use the very large set of mathematical and statistical tools provided by R.
-With ROOTR you can perform a conversion from ROOT's C++ objects to R's objects, transform the returned R objects into ROOT's C++ objects, then
-the R functionality can be used directly for statistical studies in ROOT.
-
-## ROOTR BASICS
-ROOTR creates a working environment to execute R coding called from `C++`. It allows to translate some datatypes from `C++` to R
-inside the R environment and vice versa in an easy way to get the most from both R and ROOT.
-To ease the sending and receiving of data in both environments, I overloaded the operators `<<`,`>>` and `[]`
-which make look the job as a flow of data between environments, we will see more of that later.
-With this tool you ca use any library or R package wich allows you to access a big amount of benefits to make statistical analysis.
-ROOTR also has a R events processing system, which allows to use the R graphical system from `C++`.
-
-## INSTALLATION
-To install ROOTR please read first.
-
-- [https://root.cern.ch/building-root](https://root.cern.ch/building-root)
-- [https://root.cern.ch/build-prerequisites](https://root.cern.ch/build-prerequisites)
-
-
-### COMPILING ROOTR ON MAC WITH CMAKE:
-**NOTE:** Mac OSX Yosemite last xcode and without macports
-
-
-**Prerequisites**
-
-- xcode
-- [xquartz](http://xquartz.macosforge.org/)
-- [R last version](https://www.r-project.org)
-- [cmake](https://cmake.org/download/)
-
-To compile with cmake added into ~/.profile
-
-~~~{.sh}
-export PATH=$PATH:/Applications/CMake.app/Contents/bin/
-~~~
-and
-
-~~~{.sh}
-source ~/.profile
-~~~
-
-Install needed R packages, open R and in the prompt type
-
-~~~{.sh}
-install.packages(c('Rcpp','RInside'))
-~~~
-select a mirror and install.
-
-Install the next additional packages for R TMVA interface
-
-~~~{.sh}
-install.packages(c('C50','RSNNS','e1071','xgboost'))
-~~~
-
-
-Download code from git repo
-
-~~~{.sh}
-git clone http://root.cern.ch/git/root.git
-~~~
-
-To compile ROOTR lets to create a compilation directory and to activate it use cmake -Dr=ON ..
-
-~~~{.sh}
-mkdir compile
-cd compile
-cmake -Dr=ON ..
-make -j 5
-~~~
-
-### Compiling ROOTR on Gnu/Linux with CMake:
-**NOTE:** Tested on Gnu/Linux Debian Jessie with gcc 4.9
-
-**Prerequisities**
-install
-(For debian-based distros)
-
-~~~{.sh}
-apt-get install r-base r-base-dev
-~~~
-Install needed R packages, open R and in the prompt type
-
-~~~{.sh}
-install.packages(c('Rcpp','RInside'))
-~~~
-select a mirror and install.
-
-Install the next additional packages for R TMVA interface
-
-~~~{.sh}
-install.packages(c('C50','RSNNS','e1071','xgboost'))
-~~~
-
-Download code from git repo
-
-~~~{.sh}
-git clone http://root.cern.ch/git/root.git
-~~~
-
-To compile ROOTR lets to create a compilation directory and to activate it use cmake -Dr=ON ..
-
-~~~{.sh}
-mkdir compile
-cd compile
-cmake -Dr=ON ..
-make -j 5
-~~~
-
-## How does it work ?
-There is a class called TRInterface which is located at the header TRInterface.h and uses the namespace `ROOT::R`, it is in charge
-of making calls to R to give and obtain data. This class has a series of overcharged operators which ease the passing and obtaining of data
-and code from R to C++ and vice versa. To create an object of this class the user must use the static methods `ROOT::R::TRInterface::Instance`
-and `ROOT::R::TRInterface::InstancePtr` which return a reference object and a pointer object respectively.
-
-~~~{.cxx}
-#include
-ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-~~~
-
-## Running R code and passing/getting variables.
-We have different ways to run R code and pass/obtain data to/from R environment: using the methods Execute(code) and
-Eval(code).
-
-~~~{.cxx}
-#include
-
-//creating an instance
-ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-//executing simple r commands with the operator <<
-r<<"print('hello ROOTR')";
-r<<"vec=c(1,2,3)"<<"print(vec)";
-
-//executing R's code using the method Execute that doesn't return anything
-r.Execute("print('hello ROOTR')");
-
-//We execute the code using the method Eval which returns an instance of TRObjectProxy
-//which can be converted to a ROOTR supported classes
-std::vector v=r.Eval("c(1,2,3)");
-std::cout< vd(3);
-
-//obtaining variables from R environment using the operators [] and >>
-r["seq(0,1,0.5)"]>>vd;
-std::cout< v1(3);
-v1[0]=0;
-v1[1]=1;
-v1[2]=2;
-
-r["v1"]<>m;
-m.Print();
-~~~
-So, working with ROOTR is like working with flows of data to pass, obtain and process data.
-
-## Passing functions from ROOT to R
-You can pass functions from ROOT to R using the operators `<<` and `=` or using the class TRFunction, but the arguments and datatypes of the return value cannot be pointers. They must be ROOTR supported datatypes.
-So instead of using `*Double_t` you must use `std::vector` and instead of `*Char_t` use TString or `std::string`.
-
-For this example we need to create a macro, so save it as fun.C
-
-~~~{.cxx}
-#include
-#include
-
-Double_t myfun(Double_t x)
-{
- return 2*cos(x);
-}
-
-Double_t myfun2(std::vector x) //use std::vector instead Double_t*
-{
- return x[1]*cos(x[0]);
-}
-
-void fun()
-{
-ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-r["dilog"]<
-
-Double_t myfun(Double_t x)
-{
- return 2*cos(x);
-}
-
-Int_t myfun(Int_t x)
-{
- return x;
-}
-
-void fun()
-{
-ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-r["myfund"]<<(Double_t (*)(Double_t))myfun;
-r["myfuni"]<<(Int_t (*)(Int_t))myfun;
-
-r<<"print(myfund(0.0))";
-r<<"print(myfuni(1))";
-}
-~~~
-
-## Wrapping a class
-You can wrap a class and expose it in R environment using only a pair of macrodefinitions and the template class
-`ROOT::R::class_<>`
-The `ROOTR_EXPOSED_CLASS(Class)` macro allows you to expose the class as a new datatype of R, but it has to be alongside
-the `ROOTR_MODULE(Module)` macro which allows you to create an internal R module and make the class wrapping
-To do this you must use inside the `ROOTR_MODULE` braces the class `ROOT::R::class_<>` and specify
-each constructor, attribute or method that the class to export has.
-Then the macrodefinition `LOAD_ROOTR_MODULE(Module)` can load the module and the class in R's environment.
-You can find a more clear instruction by looking at a example below in Functor section.
-
-##DataFrames
-DataFrame? is a very important datatype in R and in ROOTR we have a class to manipulate
-dataframes called TRDataFrame, with a lot of very useful operators overloaded to work with TRDataFrame's objects
-in a similar way that in the R environment but from c++ in ROOT.
-Example:
-
-Lets to create need data to play with dataframe features
-
-~~~{.cxx}
-////////////////////////
-//creating variables//
-////////////////////////
-TVectorD v1(3);
-std::vector v2(3);
-std::array v3{ {1,2,3} };
-std::list names;
-
-//////////////////////
-//assigning values//
-//////////////////////
-v1[0]=1;
-v1[1]=2;
-v1[2]=3;
-
-v2[0]=0.101;
-v2[1]=0.202;
-v2[2]=0.303;
-
-names.push_back("v1");
-names.push_back("v2");
-names.push_back("v3");
-
-ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-~~~
-In R the dataframe have associate to every column a label, in ROOTR you can have the same label using the class ROOT::R::Label to create a TRDataFrame where you data
-have a label associate.
-
-~~~{.cxx}
-/////////////////////////////////////////////////
-//creating dataframe object with its labels//
-/////////////////////////////////////////////////
-
-ROOT::R::TRDataFrame df1(ROOT::R::Label["var1"]=v1,ROOT::R::Label["var2"]=v2,ROOT::R::Label["var3"]=v3,ROOT::R::Label["strings"]=names);
-
-//////////////////////////////////////////////
-//Passing dataframe to R's environment//
-//////////////////////////////////////////////
-
-r["df1"]<>v4;
-//adding new column to df1 with name var4
-df1["var4"]=v4;
-//updating df1 in R's environment
-r["df1"]<>df2;
-
-TVectorD v(3);
-df2["v1"]>>v;
-v.Print();
-
-df2["v2"]>>v;
-v.Print();
-~~~
-
-Output
-
-~~~{.sh}
-Vector (3) is as follows
-
- | 1 |
-------------------
- 0 |0.1
- 1 |0.2
- 2 |0.3
-
-Vector (3) is as follows
-
- | 1 |
-------------------
- 0 |3
- 1 |2
- 2 |1
-~~~
-
-~~~{.cxx}
-///////////////////////////////////////////
-//Working with columns between dataframes//
-///////////////////////////////////////////
-
-df2["v3"]<>df1["var1"];
-//updating df1 in R's environment
-r["df1"]<
-root [1] ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-root [2] r.Interactive()
-[r]:a=seq
-seq seq_along seq.Date seq.default seq.int seq_len seq.POSIXt sequence
-[r]:a=seq(1,5,0.5)
-[r]:.q
-root [3] TVectorD v=r.ParseEval("a");
-root [4] v.Print()
-
-Vector (9) is as follows
-
- | 1 |
-------------------
- 0 |1
- 1 |1.5
- 2 |2
- 3 |2.5
- 4 |3
- 5 |3.5
- 6 |4
- 7 |4.5
- 8 |5
-
-root [4]
-~~~
-
-## Examples
-The examples can also be found in `$ROOTSYS/tutorials/r`
-
-## Creating a Functor
-A functor is a class which wraps a function, very useful when states and properties
-associated to that function are needed.
-In this example I show how to give support to a custom class to be used in R's environment,
-which at the same time is a functor.
-
-~~~{.cxx}
-#include
-#include
-
-typedef Double_t (*Function)(Double_t);
-
-//Functor class with the function inside
-class MyFunctor{
-public:
- MyFunctor(){
- status=false;
- f=TMath::BesselY1;
- }
- void setFunction(Function fun)
- {
- f=fun;
- status=true;
- }
- Bool_t getStatus(){return status;}
- Double_t doEval(Double_t x) {
- return f(x);
- }
-private:
- Function f;
- Bool_t status;
-};
-//this macro exposes the class into R's environment
-// and lets you pass objects directly.
-ROOTR_EXPOSED_CLASS(MyFunctor)
-
-//Macro to create a module
-ROOTR_MODULE(MyFunctorModule) {
- ROOT::R::class_( "MyFunctor" )
- //creating a default constructor
- .constructor()
- //adding the method doEval to evaluate the internal function
- .method( "doEval", &MyFunctor::doEval )
- .method( "getStatus", &MyFunctor::getStatus)
- ;
-}
-
-void Functor()
-{
- ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
- ////////////////////////////////////////////////////////////
- //Creating a functor with default function TMath::BesselY1//
- // and status false from R's environment //
- ////////////////////////////////////////////////////////////
- //Loading module into R's environment
- r["MyFunctorModule"]<SetGrid();
-
- // draw a frame to define the range
- TMultiGraph *mg = new TMultiGraph();
-
- // create the first graph (points with gaussian noise)
- const Int_t n = 24;
- Double_t x1[n] ;
- Double_t y1[n] ;
- //Generate the points along a X^3 with noise
- TRandom rg;
- rg.SetSeed(520);
- for (Int_t i = 0; i < n; i++) {
- x1[i] = rg.Uniform(0, 1);
- y1[i] = TMath::Power(x1[i], 3) + rg.Gaus() * 0.06;
- }
-
- TGraph *gr1 = new TGraph(n,x1,y1);
- gr1->SetMarkerColor(kBlue);
- gr1->SetMarkerStyle(8);
- gr1->SetMarkerSize(1);
- mg->Add(gr1);
-
- // create the second graph
- TF1 *f_known=new TF1("f_known","pow(x,3)",0,1);
- TGraph *gr2 = new TGraph(f_known);
- gr2->SetMarkerColor(kRed);
- gr2->SetMarkerStyle(8);
- gr2->SetMarkerSize(1);
- mg->Add(gr2);
- //passing data to Rfot fitting
- ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
- r["x"]<>power;
-
- TF1 *f_fitted=new TF1("f_fitted","pow(x,[0])",0,1);
- f_fitted->SetParameter(0,power);
- //plotting the fitted function
- TGraph *gr3 = new TGraph(f_fitted);
- gr3->SetMarkerColor(kGreen);
- gr3->SetMarkerStyle(8);
- gr3->SetMarkerSize(1);
-
- mg->Add(gr3);
- mg->Draw("ap");
-
- //displaying basic results
- TPaveText *pt = new TPaveText(0.1,0.6,0.5,0.9,"brNDC");
- pt->SetFillColor(18);
- pt->SetTextAlign(12);
- pt->AddText("Fitting x^power ");
- pt->AddText(" \"Blue\" Points with gaussian noise to be fitted");
- pt->AddText(" \"Red\" Known function x^3");
- TString fmsg;
- fmsg.Form(" \"Green\" Fitted function with power=%.4lf",power);
- pt->AddText(fmsg);
- pt->Draw();
- c1->Update();
- return c1;
-}
-~~~
-In the first image you can see the blue dots which are the function `x^3` with gaussian noise, the red dots correspond to
-the original function and the green ones correspond to the fitted function.
-
-\image html R_image1.png
-
-## Global Minimization in R using the package DEoptim
-DEoptim is a R package for Differential Evolution Minimization that lets you do global
-Minimization.
-To install this package you just need to run:
-
-~~~{.cxx}
-#include
-ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-r<<"install.packages('DEoptim',repos='http://cran.rstudio.com/')";
-~~~
-
-Then create a macro named GlobalMinimization.C with the next code.
-
-~~~{.cxx}
-#include
-#include
-#include
-#include
-//In the next function the *double pointer should be changed by a TVectorD datatype,
-//because the pointer has no meaning in the R environment.
-//This is a generalization of the RosenBrock function, with the min xi=1 and i>0.
-Double_t GenRosenBrock(const TVectorD xx )
-{
- int length=xx.GetNoElements();
-
- Double_t result=0;
- for(int i=0;i<(length-1);i++)
- {
- result+=pow(1-xx[i],2)+100*pow(xx[i+1]-pow(xx[i],2),2);
- }
- return result;
-}
-
-//the min xi=0 i>0
-Double_t Rastrigin(const TVectorD xx)
-{
- int length=xx.GetNoElements();
- Double_t result=10*length;
- for(int i=0;i
-#include
-#include
-
-void Interpolation()
-{
- ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
-//Creating points
-TRandom rg;
-std::vector x(10),y(10);
-for(int i=0;i<10;i++)
-{
- x[i]=i;
- y[i]=rg.Gaus();
-}
-
-r["x"]=x;
-r["y"]=y;
-
-
-r<<"dev.new()";//Required to activate new window for plotting
-//Plot parameter. Plotting using two rows and one column
-r<<"par(mfrow = c(2,1))";
-
-//plotting the points
-r<<"plot(x, y, main = 'approx(.) and approxfun(.)')";
-
-//The function "approx" returns a list with components x and y,
-//containing n coordinates which interpolate the given data points according to the method (and rule) desired.
-r<<"points(approx(x, y), col = 2, pch = '*')";
-r<<"points(approx(x, y, method = 'constant'), col = 4, pch = '*')";
-
-
-//The function "approxfun" returns a function performing (linear or constant)
-//interpolation of the given data.
-//For a given set of x values, this function will return the corresponding interpolated values.
-r<<"f <- approxfun(x, y)";
-
-r<<"curve(f(x), 0, 11, col = 'green2')";
-r<<"points(x, y)";
-
-
-//using approxfun with const method
-r<<"fc <- approxfun(x, y, method = 'const')";
-r<<"curve(fc(x), 0, 10, col = 'darkblue', add = TRUE)";
-// different interpolation on left and right side :
-r<<"plot(approxfun(x, y, rule = 2:1), 0, 11,col = 'tomato', add = TRUE, lty = 3, lwd = 2)";
-}
-~~~
-The image shows the interpolated function plotted within R:
-\image html R_image3.png
-
-## Integration (Passing vectorized function to R)
-Numerical integration using R passing the function from ROOT
-
-~~~{.cxx}
-#include
-#include
-#include
- The TRInterface class lets you process R code from ROOT.
- You can call R libraries and their functions, plot results in R or ROOT,
- and use the power of ROOT and R at the same time.
- It also lets you pass scalars, vectors and matrices from ROOT to R
- and from R to ROOT using TRObject; but you can to use overloaded operators [],<< and >>
- to work with ROOTR like work with streams of data.
-
- TRInterface class can not be instantiated directly, but you can create objects using the static methods
- TRInterface& Instance() and TRInterface* InstancePtr() to create your own objects.
-
-
- Show an example below:
- Create an exponential fit, the idea is to create a set of numbers x,y with noise from ROOT,
- pass them to R and fit the data to \f$ x^3 \f$, get the fitted coefficient(power) and plot the data,
- the known function and the fitted function.
- \code{.cpp}
-
- TCanvas *c1 = new TCanvas("c1","Curve Fit",700,500);
- c1->SetGrid();
-
- // draw a frame for multiples graphs
- TMultiGraph *mg = new TMultiGraph();
-
- // create the first graph (points with gaussian noise)
- const Int_t n = 24;
- Double_t x[n] ;
- Double_t y[n] ;
- //Generate points along a X^3 with noise
- TRandom rg;
- rg.SetSeed(520);
- for (Int_t i = 0; i < n; i++) {
- x[i] = rg.Uniform(0, 1);
- y[i] = TMath::Power(x[i], 3) + rg.Gaus() * 0.06;
- }
-
- TGraph *gr1 = new TGraph(n,x,y);
- gr1->SetMarkerColor(kBlue);
- gr1->SetMarkerStyle(8);
- gr1->SetMarkerSize(1);
- mg->Add(gr1);
-
- // create second graph
- TF1 *f_known=new TF1("f_known","pow(x,3)",0,1);
- TGraph *gr2 = new TGraph(f_known);
- gr2->SetMarkerColor(kRed);
- gr2->SetMarkerStyle(8);
- gr2->SetMarkerSize(1);
- mg->Add(gr2);
-
- //passing x and y values to R for fitting
- ROOT::R::TRInterface &r=ROOT::R::TRInterface::Instance();
- r["x"]<>power;
-
- TF1 *f_fitted=new TF1("f_fitted","pow(x,[0])",0,1);
- f_fitted->SetParameter(0,power);
- //plotting the fitted function
- TGraph *gr3 = new TGraph(f_fitted);
- gr3->SetMarkerColor(kGreen);
- gr3->SetMarkerStyle(8);
- gr3->SetMarkerSize(1);
-
- mg->Add(gr3);
- mg->Draw("ap");
-
- //displaying basic results
- TPaveText *pt = new TPaveText(0.1,0.6,0.5,0.9,"brNDC");
- pt->SetFillColor(18);
- pt->SetTextAlign(12);
- pt->AddText("Fitting x^power ");
- pt->AddText(" \"Blue\" Points with gaussian noise to be fitted");
- pt->AddText(" \"Red\" Known function x^3");
- TString fmsg;
- fmsg.Form(" \"Green\" Fitted function with power=%.4lf",power);
- pt->AddText(fmsg);
- pt->Draw();
- c1->Update();
- \endcode
- */
- class TRInterface: public TObject {
- protected:
- RInside *fR;
- TThread *th;
- public:
- //Proxy class to use operators for assignation Ex: r["name"]=object
- class Binding {
- public:
- Binding(TRInterface *rnt, TString name): fInterface(rnt), fName(name) {}
- Binding(const Binding &obj) {
- fInterface = obj.fInterface;
- fName = obj.fName;
- }
- Binding &operator=(const Binding &obj)
- {
- fInterface = obj.fInterface;
- fName = obj.fName;
- return *this;
- }
- template Binding &operator=(const T &data)
- {
- fInterface->Assign(data, fName);
- return *this;
- }
- Binding &operator=(const TRFunctionExport &fun)
- {
- //The method assign is not a template for a function
- fInterface->Assign(fun, fName);
- return *this;
- }
-
- Binding &operator<<(const TRFunctionExport &fun)
- {
- //The method assign is not a template for a function
- fInterface->Assign(fun, fName);
- return *this;
- }
-
- Binding &operator=(const TRDataFrame &df)
- {
- fInterface->Assign(df, fName);
- return *this;
- }
-
- Binding &operator<<(const TRDataFrame &df)
- {
- fInterface->Assign(df, fName);
- return *this;
- }
-
- template Binding &operator >>(T &var)
- {
- var = fInterface->Eval(fName).As();
- return *this;
- }
-
- template Binding &operator <<(T var)
- {
- fInterface->Assign(var, fName);
- return *this;
- }
-#include
- template operator T()
- {
- return fInterface->Eval(fName);
- }
-
- private:
- TRInterface *fInterface;
- TString fName;
- };
- private:
- /**
- The command line arguments are by default argc=0 and argv=NULL,
- The verbose mode is by default disabled but you can enable it to show procedures information in stdout/stderr \note some time can produce so much noise in the output
- \param argc default 0
- \param argv default null
- \param loadRcpp default true
- \param verbose default false
- \param interactive default true
- */
- TRInterface(const Int_t argc = 0, const Char_t *argv[] = NULL, const Bool_t loadRcpp = true,
- const Bool_t verbose = false, const Bool_t interactive = true);
-
- public:
- ~TRInterface();
-
- /**
- Method to set verbose mode, that produce extra output
- \note some time can produce so much noise in the output
- \param status boolean to enable of disable
- */
- void SetVerbose(Bool_t status);
- /**
- Method to eval R code and you get the result in a reference to TRObject
- \param code R code
- \param ans reference to TRObject
- \return an true or false if the execution was successful or not.
- */
- Int_t Eval(const TString &code, TRObject &ans); // parse line, returns in ans; error code rc
- /**
- Method to eval R code
- \param code R code
- */
- void Execute(const TString &code);
-
- // "unhide" TObject::Execute methods.
- using TObject::Execute;
-
- /**
- Method to eval R code and you get the result in a TRObject
- \param code R code
- \return a TRObject with result
- */
- TRObject Eval(const TString &code);
-
-
- /**
- Template method to assign C++ variables into R environment
- \param var any R wrappable datatype
- \param name name of the variable in R's environment
- */
- templatevoid Assign(const T &var, const TString &name)
- {
- // This method lets you pass variables from ROOT to R.
- // The template T should be a supported ROOT datatype and
- // the TString's name is the name of the variable in the R environment.
- fR->assign(var, name.Data());
- }
- /**
- Method to assign TRFunctionExport in R's environment
- \param fun TRFunctionExport
- \param name name of the variable in R's environment
- */
- void Assign(const TRFunctionExport &fun, const TString &name);
- /**
- Method to assign TRDataFrame in R's environment
- \param df TRDataFrame
- \param name name of the variable in R's environment
- */
- void Assign(const TRDataFrame &df, const TString &name);
-
- /**
- Method to get a R prompt to work interactively with tab completion support
- */
- void Interactive();
-
- /**
- Init event loop in a thread to support actions in windows from R graphics system
- */
- void ProcessEventsLoop();
-
- /**
- Method to verify if a package is installed
- \param pkg R's pkg name
- \return true or false if the package is installed or not
- */
- Bool_t IsInstalled(TString pkg);
- /**
- Method to load an R's package
- \param pkg R's pkg name
- \return true or false if the package was loaded or not
- */
- Bool_t Require(TString pkg);
- /**
- Method to install an R's package
- \param pkg R's pkg name
- \param repos url for R's package repository
- \return true or false if the package was installed or not
- */
- Bool_t Install(TString pkg, TString repos = "http://cran.r-project.org");
- Binding operator[](const TString &name);
-
- /**
- static method to get an TRInterface instance reference
- \return TRInterface instance reference
- */
- static TRInterface &Instance();
- /**
- static method to get an TRInterface instance pointer
- \return TRInterface instance pointer
- */
- static TRInterface *InstancePtr();
-
- ClassDefOverride(TRInterface, 0)
- };
- }
-}
-
-inline ROOT::R::TRInterface &operator<<(ROOT::R::TRInterface &r, TString code)
-{
- r.Execute(code);
- return r;
-}
-
-#endif
diff --git a/bindings/r/inc/TRInterface_Binding.h b/bindings/r/inc/TRInterface_Binding.h
deleted file mode 100644
index d897d0a22b1c2..0000000000000
--- a/bindings/r/inc/TRInterface_Binding.h
+++ /dev/null
@@ -1,940 +0,0 @@
-// Author: Omar Zapata 2015
-
-/*************************************************************************
- * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. *
- * All rights reserved. *
- * *
- * For the licensing terms see $ROOTSYS/LICENSE. *
- * For the list of contributors see $ROOTSYS/README/CREDITS. *
- *************************************************************************/
-
-#ifndef ROOT_R_TRInterface_Binding
-#define ROOT_R_TRInterface_Binding
-
-template
-Binding &operator=(OUT(*fun)(void))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61, U62 u62))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61, U62 u62, U63 u63))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator=(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61, U62 u62, U63 u63, U64 u64))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-////////////////////////////
-//Overload for Operator </
-////////////////////////////
-
-template
-Binding &operator<<(OUT(*fun)(void))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61, U62 u62))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61, U62 u62, U63 u63))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-
-template
-Binding &operator<<(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33, U34 u34, U35 u35, U36 u36, U37 u37, U38 u38, U39 u39, U40 u40, U41 u41, U42 u42, U43 u43, U44 u44, U45 u45, U46 u46, U47 u47, U48 u48, U49 u49, U50 u50, U51 u51, U52 u52, U53 u53, U54 u54, U55 u55, U56 u56, U57 u57, U58 u58, U59 u59, U60 u60, U61 u61, U62 u62, U63 u63, U64 u64))
-{
- fInterface->Assign(TRFunctionExport(fun), fName);
- return *this;
-}
-#endif
diff --git a/bindings/r/inc/TRInternalFunction.h b/bindings/r/inc/TRInternalFunction.h
deleted file mode 100644
index 65bc81ebb038e..0000000000000
--- a/bindings/r/inc/TRInternalFunction.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// @(#)root/r:$Id$
-// Author: Omar Zapata Omar.Zapata@cern.ch 07/06/2014
-
-
-/*************************************************************************
- * Copyright (C) 1995-2021, Rene Brun and Fons Rademakers. *
- * All rights reserved. *
- * *
- * For the licensing terms see $ROOTSYS/LICENSE. *
- * For the list of contributors see $ROOTSYS/README/CREDITS. *
- *************************************************************************/
-#ifndef ROOT_R_TRInternalFunction
-#define ROOT_R_TRInternalFunction
-
-#include
-
-//________________________________________________________________________________________________________
-/**
- This is a class to support deprecated method to pass function to R's Environment,
- based in Rcpp::InternalFunction
-
-
-*/
-
-
-namespace Rcpp {
- RCPP_API_CLASS(TRInternalFunction_Impl)
- {
-public:
-
- RCPP_GENERATE_CTOR_ASSIGN(TRInternalFunction_Impl)
-
-#if RCPP_VERSION >= Rcpp_Version(1,0,13)
- template
- TRInternalFunction_Impl(OUT(*fun)(T...))
- {
- set(Rcpp::XPtr< Rcpp::CppFunctionN >(new Rcpp::CppFunctionN(fun), false));
- }
-#else
-#include
-#endif
- void update(SEXP) {}
-private:
-
- inline void set(SEXP xp) {
- Rcpp::Environment RCPP = Rcpp::Environment::Rcpp_namespace() ;
- Rcpp::Function intf = RCPP["internal_function"] ;
- Storage::set__(intf(xp)) ;
- }
-
- };
-
-
-}
-
-
-namespace ROOT {
- namespace R {
-
- typedef Rcpp::TRInternalFunction_Impl TRInternalFunction ;
- }
-}
-
-#endif
diff --git a/bindings/r/inc/TRInternalFunction__ctors.h b/bindings/r/inc/TRInternalFunction__ctors.h
deleted file mode 100644
index 20c67f6f5cb8a..0000000000000
--- a/bindings/r/inc/TRInternalFunction__ctors.h
+++ /dev/null
@@ -1,607 +0,0 @@
-// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
-//
-// TRInternalFunction_Impl__ctors.h: based in Rcpp R/C++ interface class library -- generated helper code for TRInternalFunction_Impl.h
-//
-// Copyright (C) 2010 - 2013 Dirk Eddelbuettel and Romain Francois
-// Modified by Omar Zapata for ROOTR
-//
-// This file is based in Rcpp.
-
-#ifndef ROOT_R_TRInternalFunction_Impl_ctors
-#define ROOT_R_TRInternalFunction_Impl_ctors
-
-template
-TRInternalFunction_Impl(OUT(*fun)(void))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction0 >(new Rcpp::CppFunction0(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction1 >(new Rcpp::CppFunction1(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction2 >(new Rcpp::CppFunction2(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction3 >(new Rcpp::CppFunction3(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction4 >(new Rcpp::CppFunction4(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction5 >(new Rcpp::CppFunction5(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction6 >(new Rcpp::CppFunction6(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction7 >(new Rcpp::CppFunction7(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction8 >(new Rcpp::CppFunction8(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction9 >(new Rcpp::CppFunction9(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction10 >(new Rcpp::CppFunction10(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction11 >(new Rcpp::CppFunction11(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction12 >(new Rcpp::CppFunction12(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction13 >(new Rcpp::CppFunction13(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction14 >(new Rcpp::CppFunction14(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction15 >(new Rcpp::CppFunction15(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction16 >(new Rcpp::CppFunction16(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction17 >(new Rcpp::CppFunction17(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction18 >(new Rcpp::CppFunction18(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction19 >(new Rcpp::CppFunction19(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction20 >(new Rcpp::CppFunction20(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction21 >(new Rcpp::CppFunction21(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction22 >(new Rcpp::CppFunction22(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction23 >(new Rcpp::CppFunction23(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction24 >(new Rcpp::CppFunction24(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction25 >(new Rcpp::CppFunction25(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction26 >(new Rcpp::CppFunction26(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction27 >(new Rcpp::CppFunction27(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction28 >(new Rcpp::CppFunction28(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction29 >(new Rcpp::CppFunction29(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction30 >(new Rcpp::CppFunction30(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction31 >(new Rcpp::CppFunction31(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction32 >(new Rcpp::CppFunction32(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction33 >(new Rcpp::CppFunction33(fun), false)) ;
-}
-
-
-
-
-template
-TRInternalFunction_Impl(OUT(*fun)(U0 u0, U1 u1, U2 u2, U3 u3, U4 u4, U5 u5, U6 u6, U7 u7, U8 u8, U9 u9, U10 u10, U11 u11, U12 u12, U13 u13, U14 u14, U15 u15, U16 u16, U17 u17, U18 u18, U19 u19, U20 u20, U21 u21, U22 u22, U23 u23, U24 u24, U25 u25, U26 u26, U27 u27, U28 u28, U29 u29, U30 u30, U31 u31, U32 u32, U33 u33))
-{
- set(Rcpp::XPtr< Rcpp::CppFunction34 >(new Rcpp::CppFunction34