[Rcpp-commits] r1040 - in pkg/Rcpp: . R inst/include inst/unitTests src

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Wed Apr 14 14:13:10 CEST 2010


Author: romain
Date: 2010-04-14 14:13:10 +0200 (Wed, 14 Apr 2010)
New Revision: 1040

Added:
   pkg/Rcpp/R/dot_cpp.R
   pkg/Rcpp/inst/unitTests/runit.dotCpp.R
   pkg/Rcpp/src/do_dot_cpp.cpp
Modified:
   pkg/Rcpp/NAMESPACE
   pkg/Rcpp/inst/include/RcppCommon.h
   pkg/Rcpp/src/RcppCommon.cpp
   pkg/Rcpp/src/exceptions.cpp
Log:
embryo for a .Cpp interface not unlike .Call but forwarding exceptions to R (discussion will follow, maybe not today though)

Modified: pkg/Rcpp/NAMESPACE
===================================================================
--- pkg/Rcpp/NAMESPACE	2010-04-13 09:03:42 UTC (rev 1039)
+++ pkg/Rcpp/NAMESPACE	2010-04-14 12:13:10 UTC (rev 1040)
@@ -1,6 +1,7 @@
 useDynLib(Rcpp)
 
 export(Rcpp.package.skeleton)
+export(.Cpp)
 
 importFrom( utils, capture.output )
 

Added: pkg/Rcpp/R/dot_cpp.R
===================================================================
--- pkg/Rcpp/R/dot_cpp.R	                        (rev 0)
+++ pkg/Rcpp/R/dot_cpp.R	2010-04-14 12:13:10 UTC (rev 1040)
@@ -0,0 +1,25 @@
+# Copyright (C) 2010	Dirk Eddelbuettel and Romain Francois
+#
+# This file is part of Rcpp.
+#
+# Rcpp is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# Rcpp is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+.Cpp <- function(name, ..., PACKAGE){
+	symbol <- if( missing(PACKAGE) ){
+		getNativeSymbolInfo( name )
+	} else{
+		getNativeSymbolInfo( name, PACKAGE )
+	}
+	.External( "do_dot_cpp", symbol$address, ..., PACKAGE = "Rcpp" )
+}

Modified: pkg/Rcpp/inst/include/RcppCommon.h
===================================================================
--- pkg/Rcpp/inst/include/RcppCommon.h	2010-04-13 09:03:42 UTC (rev 1039)
+++ pkg/Rcpp/inst/include/RcppCommon.h	2010-04-14 12:13:10 UTC (rev 1040)
@@ -125,6 +125,8 @@
 #include <Rversion.h>
 #define RCPP_GET_NAMES(x)	Rf_getAttrib(x, R_NamesSymbol)
 
+extern "C" SEXP do_dot_cpp(SEXP) ;
+
 // #ifdef BUILDING_DLL
 // #define RcppExport extern "C" __declspec(dllexport)
 // #else
@@ -147,6 +149,7 @@
 
 /* in exceptions.cpp */
 void forward_uncaught_exceptions_to_r() ;
+void forward_exception_to_r( const std::exception& ) ;
 RcppExport SEXP initUncaughtExceptionHandler() ; 
 
 /* just testing variadic templates */

Added: pkg/Rcpp/inst/unitTests/runit.dotCpp.R
===================================================================
--- pkg/Rcpp/inst/unitTests/runit.dotCpp.R	                        (rev 0)
+++ pkg/Rcpp/inst/unitTests/runit.dotCpp.R	2010-04-14 12:13:10 UTC (rev 1040)
@@ -0,0 +1,37 @@
+#!/usr/bin/r -t
+#
+# Copyright (C) 2010	Dirk Eddelbuettel and Romain Francois
+#
+# This file is part of Rcpp.
+#
+# Rcpp is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# Rcpp is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+.setUp <- function(){
+	suppressMessages( require( inline ) )
+}
+
+generate.dot.cpp.code <- function(i ){
+	code <- sprintf( '.Cpp( "testfun_%d" %s, PACKAGE = "Rcpp" )', i, 
+		if( i == 0L ) "" else paste( ", ", paste( 0:(i-1), collapse = ", "), sep = "" )
+	)
+	parse( text = code )
+}
+
+test.dot.cpp <- function(){
+	for( i in 0:65 ){
+		expr <- generate.dot.cpp.code(i)
+		checkEquals( eval(expr), i, msg = sprintf( ".Cpp (%d arguments)", i ) )
+	}
+}
+

Modified: pkg/Rcpp/src/RcppCommon.cpp
===================================================================
--- pkg/Rcpp/src/RcppCommon.cpp	2010-04-13 09:03:42 UTC (rev 1039)
+++ pkg/Rcpp/src/RcppCommon.cpp	2010-04-14 12:13:10 UTC (rev 1040)
@@ -121,6 +121,8 @@
 }
 
 SEXP initRcpp(){
+	// TODO: we should not setup a custom terminate 
+	//       as this does not work as expected on windows
 	initUncaughtExceptionHandler() ;
 	return R_NilValue ;
 }

Added: pkg/Rcpp/src/do_dot_cpp.cpp
===================================================================
--- pkg/Rcpp/src/do_dot_cpp.cpp	                        (rev 0)
+++ pkg/Rcpp/src/do_dot_cpp.cpp	2010-04-14 12:13:10 UTC (rev 1040)
@@ -0,0 +1,327 @@
+// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8 -*-
+//
+// do_dot_cpp.cpp: R/C++ interface class library -- .Cpp backend
+//
+// Copyright (C) 2010 Dirk Eddelbuettel and Romain Francois
+//
+// This file is part of Rcpp.
+//
+// Rcpp is free software: you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 2 of the License, or
+// (at your option) any later version.
+//
+// Rcpp is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Rcpp.  If not, see <http://www.gnu.org/licenses/>.
+
+#include <Rcpp.h>
+#include <R_ext/Rdynload.h>
+
+/* because here we know we are using c++ */
+typedef SEXP (*VarFun)(...);
+
+/* This looks up entry points in DLLs in a platform specific way. */
+#define MAX_ARGS 65
+
+/* Maximum length of entry-point name, including nul terminator */
+#define MaxSymbolBytes 1024
+
+/* Work around casting issues: works where it is needed */
+typedef union {void *p; DL_FUNC fn;} fn_ptr;
+
+static DL_FUNC get_fun_symbol(SEXP s){
+    fn_ptr tmp;
+    tmp.p =  EXTPTR_PTR(s);
+    return tmp.fn;
+}
+
+#define TRY_CATCH_FORWARD_CASE( __CASE__, __CODE__ )       \
+case __CASE__:                                             \
+{                                                          \
+	try{                                                   \
+		res = __CODE__ ;                                   \
+	} catch( std::exception& ex ){                         \
+		forward_exception_to_r(ex) ;                       \
+	}                                                      \
+	break ;                                                \
+}
+
+SEXP do_dot_cpp(SEXP args){
+	
+    /* grab the external pointer to the native routine */
+    SEXP xp = CADR( args ) ;
+    DL_FUNC ofun = get_fun_symbol(xp) ;
+    
+    SEXP res = R_NilValue ;
+    /* 
+    	- the first argument is "do_dot_cpp" 
+    	- the second argument is the external pointer to the function */
+    SEXP p = CDDR(args) ;
+    if( p == R_NilValue ){	
+    	/* no arguments, simple case */
+    	try{                               
+			res = (SEXP) ofun() ;               
+		} catch( std::exception& ex ){     
+			forward_exception_to_r(ex) ;   
+		}
+    } else {
+    	/* need to collect arguments */
+    	SEXP cargs[MAX_ARGS] ;
+    	int nargs = 0 ;
+    	for(; nargs<MAX_ARGS; nargs++){
+    		if( p == R_NilValue ) break ;
+    		cargs[nargs] = CAR(p) ;
+    		p = CDR(p) ;
+    	}
+    	if( p != R_NilValue ){
+    		Rf_error( "too many arguments in foreign function call" );
+    	}
+    	/* we know there is at least one argument otherwise we would not 
+    	   be in this branch */
+    	VarFun fun = reinterpret_cast<VarFun>( ofun ) ;
+    	   
+    	switch( nargs ){
+    		
+    		/* 
+    		cases <- sapply( 1:65, function(i){
+    			sprintf( 
+    				"TRY_CATCH_FORWARD_CASE( %2d, fun(%s) ) ;", 
+    				i, 
+    				paste( paste( "cargs[", 0:(i-1), "]", sep = "" ), collapse = ", " )
+    			)
+    		} )
+    		writeLines( cases )
+    		
+    		*/
+TRY_CATCH_FORWARD_CASE(  1, fun(cargs[0]) ) ;
+TRY_CATCH_FORWARD_CASE(  2, fun(cargs[0], cargs[1]) ) ;
+TRY_CATCH_FORWARD_CASE(  3, fun(cargs[0], cargs[1], cargs[2]) ) ;
+TRY_CATCH_FORWARD_CASE(  4, fun(cargs[0], cargs[1], cargs[2], cargs[3]) ) ;
+TRY_CATCH_FORWARD_CASE(  5, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4]) ) ;
+TRY_CATCH_FORWARD_CASE(  6, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5]) ) ;
+TRY_CATCH_FORWARD_CASE(  7, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6]) ) ;
+TRY_CATCH_FORWARD_CASE(  8, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7]) ) ;
+TRY_CATCH_FORWARD_CASE(  9, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8]) ) ;
+TRY_CATCH_FORWARD_CASE( 10, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9]) ) ;
+TRY_CATCH_FORWARD_CASE( 11, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10]) ) ;
+TRY_CATCH_FORWARD_CASE( 12, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11]) ) ;
+TRY_CATCH_FORWARD_CASE( 13, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12]) ) ;
+TRY_CATCH_FORWARD_CASE( 14, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13]) ) ;
+TRY_CATCH_FORWARD_CASE( 15, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14]) ) ;
+TRY_CATCH_FORWARD_CASE( 16, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15]) ) ;
+TRY_CATCH_FORWARD_CASE( 17, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16]) ) ;
+TRY_CATCH_FORWARD_CASE( 18, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17]) ) ;
+TRY_CATCH_FORWARD_CASE( 19, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18]) ) ;
+TRY_CATCH_FORWARD_CASE( 20, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19]) ) ;
+TRY_CATCH_FORWARD_CASE( 21, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20]) ) ;
+TRY_CATCH_FORWARD_CASE( 22, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21]) ) ;
+TRY_CATCH_FORWARD_CASE( 23, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22]) ) ;
+TRY_CATCH_FORWARD_CASE( 24, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23]) ) ;
+TRY_CATCH_FORWARD_CASE( 25, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24]) ) ;
+TRY_CATCH_FORWARD_CASE( 26, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25]) ) ;
+TRY_CATCH_FORWARD_CASE( 27, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26]) ) ;
+TRY_CATCH_FORWARD_CASE( 28, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27]) ) ;
+TRY_CATCH_FORWARD_CASE( 29, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28]) ) ;
+TRY_CATCH_FORWARD_CASE( 30, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29]) ) ;
+TRY_CATCH_FORWARD_CASE( 31, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30]) ) ;
+TRY_CATCH_FORWARD_CASE( 32, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31]) ) ;
+TRY_CATCH_FORWARD_CASE( 33, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32]) ) ;
+TRY_CATCH_FORWARD_CASE( 34, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33]) ) ;
+TRY_CATCH_FORWARD_CASE( 35, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34]) ) ;
+TRY_CATCH_FORWARD_CASE( 36, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35]) ) ;
+TRY_CATCH_FORWARD_CASE( 37, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36]) ) ;
+TRY_CATCH_FORWARD_CASE( 38, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37]) ) ;
+TRY_CATCH_FORWARD_CASE( 39, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38]) ) ;
+TRY_CATCH_FORWARD_CASE( 40, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39]) ) ;
+TRY_CATCH_FORWARD_CASE( 41, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40]) ) ;
+TRY_CATCH_FORWARD_CASE( 42, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41]) ) ;
+TRY_CATCH_FORWARD_CASE( 43, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42]) ) ;
+TRY_CATCH_FORWARD_CASE( 44, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43]) ) ;
+TRY_CATCH_FORWARD_CASE( 45, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44]) ) ;
+TRY_CATCH_FORWARD_CASE( 46, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45]) ) ;
+TRY_CATCH_FORWARD_CASE( 47, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46]) ) ;
+TRY_CATCH_FORWARD_CASE( 48, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47]) ) ;
+TRY_CATCH_FORWARD_CASE( 49, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48]) ) ;
+TRY_CATCH_FORWARD_CASE( 50, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49]) ) ;
+TRY_CATCH_FORWARD_CASE( 51, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50]) ) ;
+TRY_CATCH_FORWARD_CASE( 52, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51]) ) ;
+TRY_CATCH_FORWARD_CASE( 53, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52]) ) ;
+TRY_CATCH_FORWARD_CASE( 54, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53]) ) ;
+TRY_CATCH_FORWARD_CASE( 55, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54]) ) ;
+TRY_CATCH_FORWARD_CASE( 56, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55]) ) ;
+TRY_CATCH_FORWARD_CASE( 57, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56]) ) ;
+TRY_CATCH_FORWARD_CASE( 58, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56], cargs[57]) ) ;
+TRY_CATCH_FORWARD_CASE( 59, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56], cargs[57], cargs[58]) ) ;
+TRY_CATCH_FORWARD_CASE( 60, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56], cargs[57], cargs[58], cargs[59]) ) ;
+TRY_CATCH_FORWARD_CASE( 61, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56], cargs[57], cargs[58], cargs[59], cargs[60]) ) ;
+TRY_CATCH_FORWARD_CASE( 62, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56], cargs[57], cargs[58], cargs[59], cargs[60], cargs[61]) ) ;
+TRY_CATCH_FORWARD_CASE( 63, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56], cargs[57], cargs[58], cargs[59], cargs[60], cargs[61], cargs[62]) ) ;
+TRY_CATCH_FORWARD_CASE( 64, fun(cargs[0], cargs[1], cargs[2], cargs[3], cargs[4], cargs[5], cargs[6], cargs[7], cargs[8], cargs[9], cargs[10], cargs[11], cargs[12], cargs[13], cargs[14], cargs[15], cargs[16], cargs[17], cargs[18], cargs[19], cargs[20], cargs[21], cargs[22], cargs[23], cargs[24], cargs[25], cargs[26], cargs[27], cargs[28], cargs[29], cargs[30], cargs[31], cargs[32], cargs[33], cargs[34], cargs[35], cargs[36], cargs[37], cargs[38], cargs[39], cargs[40], cargs[41], cargs[42], cargs[43], cargs[44], cargs[45], cargs[46], cargs[47], cargs[48], cargs[49], cargs[50], cargs[51], cargs[52], cargs[53], cargs[54], cargs[55], cargs[56], cargs[57], cargs[58], cargs[59], cargs[60], cargs[61], cargs[62], cargs[63]) ) ;
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/rcpp -r 1040


More information about the Rcpp-commits mailing list