The R Project SVN R

Rev

Rev 29864 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 29864 Rev 30691
1
/*
1
/*
2
 *  R : A Computer Language for Statistical Data Analysis
2
 *  R : A Computer Language for Statistical Data Analysis
3
 *  Copyright (C) 1995  Robert Gentleman and Ross Ihaka
3
 *  Copyright (C) 1995  Robert Gentleman and Ross Ihaka
4
 *  Copyright (C) 1997--2002  The R Development Core Team
4
 *  Copyright (C) 1997--2002  The R Development Core Team
5
 *  Copyright (C) 2003	      The R Foundation
5
 *  Copyright (C) 2003	      The R Foundation
6
 *
6
 *
7
 *  This program is free software; you can redistribute it and/or modify
7
 *  This program is free software; you can redistribute it and/or modify
8
 *  it under the terms of the GNU General Public License as published by
8
 *  it under the terms of the GNU General Public License as published by
9
 *  the Free Software Foundation; either version 2 of the License, or
9
 *  the Free Software Foundation; either version 2 of the License, or
10
 *  (at your option) any later version.
10
 *  (at your option) any later version.
11
 *
11
 *
12
 *  This program is distributed in the hope that it will be useful,
12
 *  This program is distributed in the hope that it will be useful,
13
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 *  GNU General Public License for more details.
15
 *  GNU General Public License for more details.
16
 *
16
 *
17
 *  A copy of the GNU General Public License is available via WWW at
17
 *  A copy of the GNU General Public License is available via WWW at
18
 *  http://www.gnu.org/copyleft/gpl.html.  You can also obtain it by
18
 *  http://www.gnu.org/copyleft/gpl.html.  You can also obtain it by
19
 *  writing to the Free Software Foundation, Inc., 59 Temple Place,
19
 *  writing to the Free Software Foundation, Inc., 59 Temple Place,
20
 *  Suite 330, Boston, MA  02111-1307  USA.
20
 *  Suite 330, Boston, MA  02111-1307  USA.
21
 */
21
 */
22
 
22
 
23
#ifdef HAVE_CONFIG_H
23
#ifdef HAVE_CONFIG_H
24
#include <config.h>
24
#include <config.h>
25
#endif
25
#endif
26
 
26
 
27
#include <string.h>
27
#include <string.h>
28
#include <stdlib.h>
28
#include <stdlib.h>
29
 
29
 
30
#include <Defn.h>
30
#include <Defn.h>
31
#include <Rmath.h>
31
#include <Rmath.h>
32
#include <Rdevices.h>
32
#include <Rdevices.h>
33
 
33
 
34
#include <R_ext/RConverters.h>
34
#include <R_ext/RConverters.h>
35
 
35
 
36
#ifndef max
36
#ifndef max
37
#define max(a, b) ((a > b)?(a):(b))
37
#define max(a, b) ((a > b)?(a):(b))
38
#endif
38
#endif
39
 
39
 
40
 
40
 
41
/* These are set during each call to do_dotCode() below. */
41
/* These are set during each call to do_dotCode() below. */
42
 
42
 
43
static SEXP NaokSymbol = NULL;
43
static SEXP NaokSymbol = NULL;
44
static SEXP DupSymbol = NULL;
44
static SEXP DupSymbol = NULL;
45
static SEXP PkgSymbol = NULL;
45
static SEXP PkgSymbol = NULL;
46
 
46
 
-
 
47
/* Global variable that should go. Should actually be doing this in a much more straightforward manner. */
-
 
48
#include <Rdynpriv.h>
-
 
49
enum {FILENAME, DLL_HANDLE, R_OBJECT, NOT_DEFINED};
-
 
50
typedef struct {
47
static char DLLname[PATH_MAX];
51
    char DLLname[PATH_MAX];
-
 
52
    HINSTANCE dll;
-
 
53
    SEXP  obj;
-
 
54
    int type;
-
 
55
} DllReference;
-
 
56
 
48
 
57
 
49
/* This looks up entry points in DLLs in a platform specific way. */
58
/* This looks up entry points in DLLs in a platform specific way. */
50
#include <Rdynpriv.h>
59
#include <Rdynpriv.h>
51
 
60
 
-
 
61
#define MAX_ARGS 65
-
 
62
 
-
 
63
static DL_FUNC R_FindNativeSymbolFromDLL(char *name, DllReference *dll, R_RegisteredNativeSymbol *symbol);
-
 
64
 
-
 
65
static SEXP naokfind(SEXP args, int * len, int *naok, int *dup, DllReference *dll);
-
 
66
static SEXP pkgtrim(SEXP args, DllReference *dll);
-
 
67
 
-
 
68
/*
-
 
69
  Checks whether the specified object correctly identifies a native routine.
-
 
70
  This can be  
-
 
71
   a) a string,
-
 
72
   b) an external pointer giving the address of the routine (e.g. getNativeSymbolInfo("foo")$address)
-
 
73
   c) or a NativeSymbolInfo itself  (e.g. getNativeSymbolInfo("foo"))
-
 
74
 */
-
 
75
static int
-
 
76
checkValidSymbolId(SEXP op, SEXP call, DL_FUNC *fun)
-
 
77
{
-
 
78
    if (isValidString(op))
-
 
79
	return(0);
-
 
80
 
-
 
81
    else if((TYPEOF(op) == EXTPTRSXP && R_ExternalPtrTag(op) == Rf_install("native symbol"))) {
-
 
82
 
-
 
83
	if((*fun = R_ExternalPtrAddr(op)) == NULL) 
-
 
84
	    errorcall(call, "NULL value passed as symbol address.");
-
 
85
	return(0);
-
 
86
 
-
 
87
    } else if(inherits(op, "NativeSymbolInfo")) {
-
 
88
 
-
 
89
	return(checkValidSymbolId(VECTOR_ELT(op, 1), call, fun));
-
 
90
 
-
 
91
    }
-
 
92
 
-
 
93
    errorcall(call, "function name must be a string (of length 1) or native symbol reference.");
-
 
94
    return(0);
-
 
95
}
-
 
96
 
-
 
97
 
-
 
98
/*
-
 
99
  This is the routine that is called by do_dotCode, do_dotcall and do_External
-
 
100
  to find the DL_FUNC to invoke. It handles processing the arguments for the
-
 
101
  PACKAGE argument, if present, and also takes care of the cases where we are given
-
 
102
  a NativeSymbolInfo object, an address directly, and if the DLL is specified.
-
 
103
  If no PACKAGE is provided, we check whether the calling function is in a namespace
-
 
104
  and look there.
-
 
105
*/
-
 
106
SEXP
-
 
107
resolveNativeRoutine(SEXP args, DL_FUNC *fun, R_RegisteredNativeSymbol *symbol, char *buf, 
-
 
108
		     int *nargs, int *naok, int *dup, SEXP call)
-
 
109
{
-
 
110
    SEXP op;
-
 
111
    char *p, *q;
-
 
112
    DllReference dll = {"", NULL, NULL, NOT_DEFINED}; 
-
 
113
 
-
 
114
    op = CAR(args);
-
 
115
    checkValidSymbolId(op, call, fun);
-
 
116
 
-
 
117
    /* The following code modifies the argument list */
-
 
118
    /* We know this is ok because do_dotCode is entered */
-
 
119
    /* with its arguments evaluated. */
-
 
120
 
-
 
121
    strcpy(dll.DLLname, "");
-
 
122
    if(symbol->type == R_C_SYM || symbol->type == R_FORTRAN_SYM) {
-
 
123
	args = naokfind(CDR(args), nargs, naok, dup, &dll);
-
 
124
	
-
 
125
	if(*naok == NA_LOGICAL)
-
 
126
	    errorcall(call, "invalid naok value");
-
 
127
	if(*nargs > MAX_ARGS)
-
 
128
	    errorcall(call, "too many arguments in foreign function call");
-
 
129
    } else {
-
 
130
	if (PkgSymbol == NULL) PkgSymbol = install("PACKAGE");
-
 
131
	args = pkgtrim(args, &dll);
-
 
132
    }
-
 
133
 
-
 
134
    /* Make up the load symbol and look it up. */
-
 
135
 
-
 
136
    if(TYPEOF(op) == STRSXP) {
-
 
137
	p = CHAR(STRING_ELT(op, 0));
-
 
138
	q = buf;
-
 
139
	while ((*q = *p) != '\0') {
-
 
140
	    p++;
-
 
141
	    q++;
-
 
142
	}
-
 
143
    } 
-
 
144
 
-
 
145
    if(!*fun) {
-
 
146
	if(dll.type != FILENAME) {
-
 
147
	    *fun = R_FindNativeSymbolFromDLL(buf, &dll, symbol);
-
 
148
	    if(!fun) {
-
 
149
		errorcall(call, "cannot resolve native routine");
-
 
150
	    }
-
 
151
	} 
-
 
152
 
-
 
153
	if (!*fun && !(*fun = R_FindSymbol(buf, dll.DLLname, symbol))) {
-
 
154
	    if(strlen(dll.DLLname))
-
 
155
		errorcall(call, "%s function name not in DLL for package %s",
-
 
156
			   symbol->type == R_FORTRAN_SYM ? "Fortran" : "C", 
-
 
157
			   dll.DLLname);
-
 
158
	    else
-
 
159
		errorcall(call, "%s function name not in load table",
-
 
160
			  symbol->type == R_FORTRAN_SYM ? "Fortran" : "C"); 
-
 
161
	}
-
 
162
    }
-
 
163
 
-
 
164
    return(args);
-
 
165
}
-
 
166
 
-
 
167
 
-
 
168
 
52
/* Convert an R object to a non-moveable C/Fortran object and return
169
/* Convert an R object to a non-moveable C/Fortran object and return
53
   a pointer to it.  This leaves pointers for anything other
170
   a pointer to it.  This leaves pointers for anything other
54
   than vectors and lists unaltered.
171
   than vectors and lists unaltered.
55
*/
172
*/
56
 
173
 
57
static Rboolean
174
static Rboolean
58
checkNativeType(int targetType, int actualType)
175
checkNativeType(int targetType, int actualType)
59
{
176
{
60
   if(targetType > 0) {
177
   if(targetType > 0) {
61
      if(targetType == INTSXP || targetType == LGLSXP) {
178
      if(targetType == INTSXP || targetType == LGLSXP) {
62
	  return(actualType == INTSXP || actualType == LGLSXP);
179
	  return(actualType == INTSXP || actualType == LGLSXP);
63
      }
180
      }
64
      return(targetType == actualType);
181
      return(targetType == actualType);
65
   }
182
   }
66
 
183
 
67
  return(TRUE);
184
  return(TRUE);
68
}
185
}
69
 
186
 
70
 
187
 
71
 
188
 
72
static void *RObjToCPtr(SEXP s, int naok, int dup, int narg, int Fort, const char *name, R_toCConverter **converter,
189
static void *RObjToCPtr(SEXP s, int naok, int dup, int narg, int Fort, const char *name, R_toCConverter **converter,
73
                          int targetType)
190
                          int targetType)
74
{
191
{
75
    int *iptr;
192
    int *iptr;
76
    float *sptr;
193
    float *sptr;
77
    double *rptr;
194
    double *rptr;
78
    char **cptr, *fptr;
195
    char **cptr, *fptr;
79
    Rcomplex *zptr;
196
    Rcomplex *zptr;
80
    SEXP *lptr, CSingSymbol=install("Csingle");
197
    SEXP *lptr, CSingSymbol=install("Csingle");
81
    int i, l, n;
198
    int i, l, n;
82
 
199
 
83
    if(converter)
200
    if(converter)
84
	*converter = NULL;
201
	*converter = NULL;
85
 
202
 
86
    if(length(getAttrib(s, R_ClassSymbol))) {
203
    if(length(getAttrib(s, R_ClassSymbol))) {
87
	R_CConvertInfo info;
204
	R_CConvertInfo info;
88
	int success;
205
	int success;
89
        void *ans;
206
        void *ans;
90
 
207
 
91
	info.naok = naok;
208
	info.naok = naok;
92
	info.dup = dup;
209
	info.dup = dup;
93
	info.narg = narg;
210
	info.narg = narg;
94
	info.Fort = Fort;
211
	info.Fort = Fort;
95
        info.name = name;
212
        info.name = name;
96
 
213
 
97
	ans = Rf_convertToC(s, &info, &success, converter);
214
	ans = Rf_convertToC(s, &info, &success, converter);
98
	if(success)
215
	if(success)
99
	    return(ans);
216
	    return(ans);
100
    }
217
    }
101
 
218
 
102
    if(checkNativeType(targetType, TYPEOF(s)) == FALSE) {
219
    if(checkNativeType(targetType, TYPEOF(s)) == FALSE) {
103
     if(!dup) {
220
     if(!dup) {
104
       error("explicit request not to duplicate arguments in call to %s, but argument %d is of the wrong type (%d != %d)",
221
       error("explicit request not to duplicate arguments in call to %s, but argument %d is of the wrong type (%d != %d)",
105
	     name, narg + 1, targetType, TYPEOF(s));
222
	     name, narg + 1, targetType, TYPEOF(s));
106
     }
223
     }
107
 
224
 
108
     if(targetType != SINGLESXP)
225
     if(targetType != SINGLESXP)
109
        s = coerceVector(s, targetType);
226
        s = coerceVector(s, targetType);
110
    }
227
    }
111
 
228
 
112
    switch(TYPEOF(s)) {
229
    switch(TYPEOF(s)) {
113
    case LGLSXP:
230
    case LGLSXP:
114
    case INTSXP:
231
    case INTSXP:
115
	n = LENGTH(s);
232
	n = LENGTH(s);
116
	iptr = INTEGER(s);
233
	iptr = INTEGER(s);
117
	for (i = 0 ; i < n ; i++) {
234
	for (i = 0 ; i < n ; i++) {
118
	    if(!naok && iptr[i] == NA_INTEGER)
235
	    if(!naok && iptr[i] == NA_INTEGER)
119
		error("NAs in foreign function call (arg %d)", narg);
236
		error("NAs in foreign function call (arg %d)", narg);
120
	}
237
	}
121
	if (dup) {
238
	if (dup) {
122
	    iptr = (int*)R_alloc(n, sizeof(int));
239
	    iptr = (int*)R_alloc(n, sizeof(int));
123
	    for (i = 0 ; i < n ; i++)
240
	    for (i = 0 ; i < n ; i++)
124
		iptr[i] = INTEGER(s)[i];
241
		iptr[i] = INTEGER(s)[i];
125
	}
242
	}
126
	return (void*)iptr;
243
	return (void*)iptr;
127
	break;
244
	break;
128
    case REALSXP:
245
    case REALSXP:
129
	n = LENGTH(s);
246
	n = LENGTH(s);
130
	rptr = REAL(s);
247
	rptr = REAL(s);
131
	for (i = 0 ; i < n ; i++) {
248
	for (i = 0 ; i < n ; i++) {
132
	    if(!naok && !R_FINITE(rptr[i]))
249
	    if(!naok && !R_FINITE(rptr[i]))
133
		error("NA/NaN/Inf in foreign function call (arg %d)", narg);
250
		error("NA/NaN/Inf in foreign function call (arg %d)", narg);
134
	}
251
	}
135
	if (dup) {
252
	if (dup) {
136
	    if(asLogical(getAttrib(s, CSingSymbol)) == 1) {
253
	    if(asLogical(getAttrib(s, CSingSymbol)) == 1) {
137
		sptr = (float*)R_alloc(n, sizeof(float));
254
		sptr = (float*)R_alloc(n, sizeof(float));
138
		for (i = 0 ; i < n ; i++)
255
		for (i = 0 ; i < n ; i++)
139
		    sptr[i] = (float) REAL(s)[i];
256
		    sptr[i] = (float) REAL(s)[i];
140
		return (void*)sptr;
257
		return (void*)sptr;
141
	    } else {
258
	    } else {
142
		rptr = (double*)R_alloc(n, sizeof(double));
259
		rptr = (double*)R_alloc(n, sizeof(double));
143
		for (i = 0 ; i < n ; i++)
260
		for (i = 0 ; i < n ; i++)
144
		    rptr[i] = REAL(s)[i];
261
		    rptr[i] = REAL(s)[i];
145
		return (void*)rptr;
262
		return (void*)rptr;
146
	    }
263
	    }
147
	} else
264
	} else
148
	    return (void*)rptr;
265
	    return (void*)rptr;
149
	break;
266
	break;
150
    case CPLXSXP:
267
    case CPLXSXP:
151
	n = LENGTH(s);
268
	n = LENGTH(s);
152
	zptr = COMPLEX(s);
269
	zptr = COMPLEX(s);
153
	for (i = 0 ; i < n ; i++) {
270
	for (i = 0 ; i < n ; i++) {
154
	    if(!naok && (!R_FINITE(zptr[i].r) || !R_FINITE(zptr[i].i)))
271
	    if(!naok && (!R_FINITE(zptr[i].r) || !R_FINITE(zptr[i].i)))
155
		error("Complex NA/NaN/Inf in foreign function call (arg %d)", narg);
272
		error("Complex NA/NaN/Inf in foreign function call (arg %d)", narg);
156
	}
273
	}
157
	if (dup) {
274
	if (dup) {
158
	    zptr = (Rcomplex*)R_alloc(n, sizeof(Rcomplex));
275
	    zptr = (Rcomplex*)R_alloc(n, sizeof(Rcomplex));
159
	    for (i = 0 ; i < n ; i++)
276
	    for (i = 0 ; i < n ; i++)
160
		zptr[i] = COMPLEX(s)[i];
277
		zptr[i] = COMPLEX(s)[i];
161
	}
278
	}
162
	return (void*)zptr;
279
	return (void*)zptr;
163
	break;
280
	break;
164
    case STRSXP:
281
    case STRSXP:
165
	if(!dup)
282
	if(!dup)
166
	    error("character variables must be duplicated in .C/.Fortran");
283
	    error("character variables must be duplicated in .C/.Fortran");
167
	n = LENGTH(s);
284
	n = LENGTH(s);
168
	if(Fort) {
285
	if(Fort) {
169
	    if(n > 1) warning("only first string in char vector used in .Fortran");
286
	    if(n > 1) warning("only first string in char vector used in .Fortran");
170
	    l = strlen(CHAR(STRING_ELT(s, 0)));
287
	    l = strlen(CHAR(STRING_ELT(s, 0)));
171
	    fptr = (char*)R_alloc(max(255, l) + 1, sizeof(char));
288
	    fptr = (char*)R_alloc(max(255, l) + 1, sizeof(char));
172
	    strcpy(fptr, CHAR(STRING_ELT(s, 0)));
289
	    strcpy(fptr, CHAR(STRING_ELT(s, 0)));
173
	    return (void*)fptr;
290
	    return (void*)fptr;
174
	} else {
291
	} else {
175
	    cptr = (char**)R_alloc(n, sizeof(char*));
292
	    cptr = (char**)R_alloc(n, sizeof(char*));
176
	    for (i = 0 ; i < n ; i++) {
293
	    for (i = 0 ; i < n ; i++) {
177
		l = strlen(CHAR(STRING_ELT(s, i)));
294
		l = strlen(CHAR(STRING_ELT(s, i)));
178
		cptr[i] = (char*)R_alloc(l + 1, sizeof(char));
295
		cptr[i] = (char*)R_alloc(l + 1, sizeof(char));
179
		strcpy(cptr[i], CHAR(STRING_ELT(s, i)));
296
		strcpy(cptr[i], CHAR(STRING_ELT(s, i)));
180
	    }
297
	    }
181
	    return (void*)cptr;
298
	    return (void*)cptr;
182
	}
299
	}
183
	break;
300
	break;
184
    case VECSXP:
301
    case VECSXP:
185
	if (!dup) return (void*)VECTOR_PTR(s); /***** Dangerous to GC!!! */
302
	if (!dup) return (void*)VECTOR_PTR(s); /***** Dangerous to GC!!! */
186
  	n = length(s);
303
  	n = length(s);
187
	lptr = (SEXP*)R_alloc(n, sizeof(SEXP));
304
	lptr = (SEXP*)R_alloc(n, sizeof(SEXP));
188
	for (i = 0 ; i < n ; i++) {
305
	for (i = 0 ; i < n ; i++) {
189
	    lptr[i] = VECTOR_ELT(s, i);
306
	    lptr[i] = VECTOR_ELT(s, i);
190
	}
307
	}
191
 	return (void*)lptr;
308
 	return (void*)lptr;
192
	break;
309
	break;
193
    case LISTSXP:
310
    case LISTSXP:
194
	if(Fort) error("invalid mode to pass to Fortran (arg %d)", narg);
311
	if(Fort) error("invalid mode to pass to Fortran (arg %d)", narg);
195
	/* Warning : The following looks like it could bite ... */
312
	/* Warning : The following looks like it could bite ... */
196
	if(!dup) return (void*)s;
313
	if(!dup) return (void*)s;
197
	n = length(s);
314
	n = length(s);
198
	cptr = (char**)R_alloc(n, sizeof(char*));
315
	cptr = (char**)R_alloc(n, sizeof(char*));
199
	for(i=0 ; i<n ; i++) {
316
	for(i=0 ; i<n ; i++) {
200
	    cptr[i] = (char*)s;
317
	    cptr[i] = (char*)s;
201
	    s = CDR(s);
318
	    s = CDR(s);
202
	}
319
	}
203
	return (void*)cptr;
320
	return (void*)cptr;
204
	break;
321
	break;
205
    default:
322
    default:
206
	if(Fort) error("invalid mode to pass to Fortran (arg %d)", narg);
323
	if(Fort) error("invalid mode to pass to Fortran (arg %d)", narg);
207
	return (void*)s;
324
	return (void*)s;
208
    }
325
    }
209
}
326
}
210
 
327
 
211
 
328
 
212
static SEXP CPtrToRObj(void *p, SEXP arg, int Fort, R_NativePrimitiveArgType type)
329
static SEXP CPtrToRObj(void *p, SEXP arg, int Fort, R_NativePrimitiveArgType type)
213
{
330
{
214
    int *iptr, n=length(arg);
331
    int *iptr, n=length(arg);
215
    float *sptr;
332
    float *sptr;
216
    double *rptr;
333
    double *rptr;
217
    char **cptr, buf[256];
334
    char **cptr, buf[256];
218
    Rcomplex *zptr;
335
    Rcomplex *zptr;
219
    SEXP *lptr, CSingSymbol = install("Csingle");
336
    SEXP *lptr, CSingSymbol = install("Csingle");
220
    int i;
337
    int i;
221
    SEXP s, t;
338
    SEXP s, t;
222
 
339
 
223
    switch(type) {
340
    switch(type) {
224
    case LGLSXP:
341
    case LGLSXP:
225
    case INTSXP:
342
    case INTSXP:
226
	s = allocVector(type, n);
343
	s = allocVector(type, n);
227
	iptr = (int*)p;
344
	iptr = (int*)p;
228
	for(i=0 ; i<n ; i++)
345
	for(i=0 ; i<n ; i++)
229
            INTEGER(s)[i] = iptr[i];
346
            INTEGER(s)[i] = iptr[i];
230
	break;
347
	break;
231
    case REALSXP:
348
    case REALSXP:
232
    case SINGLESXP:
349
    case SINGLESXP:
233
	s = allocVector(REALSXP, n);
350
	s = allocVector(REALSXP, n);
234
	if(type == SINGLESXP || asLogical(getAttrib(arg, CSingSymbol)) == 1) {
351
	if(type == SINGLESXP || asLogical(getAttrib(arg, CSingSymbol)) == 1) {
235
	    sptr = (float*) p;
352
	    sptr = (float*) p;
236
	    for(i=0 ; i<n ; i++) REAL(s)[i] = (double) sptr[i];
353
	    for(i=0 ; i<n ; i++) REAL(s)[i] = (double) sptr[i];
237
	} else {
354
	} else {
238
	    rptr = (double*) p;
355
	    rptr = (double*) p;
239
	    for(i=0 ; i<n ; i++) REAL(s)[i] = rptr[i];
356
	    for(i=0 ; i<n ; i++) REAL(s)[i] = rptr[i];
240
	}
357
	}
241
	break;
358
	break;
242
    case CPLXSXP:
359
    case CPLXSXP:
243
	s = allocVector(type, n);
360
	s = allocVector(type, n);
244
	zptr = (Rcomplex*)p;
361
	zptr = (Rcomplex*)p;
245
	for(i=0 ; i<n ; i++) {
362
	for(i=0 ; i<n ; i++) {
246
	    COMPLEX(s)[i] = zptr[i];
363
	    COMPLEX(s)[i] = zptr[i];
247
	}
364
	}
248
	break;
365
	break;
249
    case STRSXP:
366
    case STRSXP:
250
	if(Fort) {
367
	if(Fort) {
251
	    /* only return one string: warned on the R -> Fortran step */
368
	    /* only return one string: warned on the R -> Fortran step */
252
	    strncpy(buf, (char*)p, 255);
369
	    strncpy(buf, (char*)p, 255);
253
	    buf[255] = '\0';
370
	    buf[255] = '\0';
254
	    PROTECT(s = allocVector(type, 1));
371
	    PROTECT(s = allocVector(type, 1));
255
	    SET_STRING_ELT(s, 0, mkChar(buf));
372
	    SET_STRING_ELT(s, 0, mkChar(buf));
256
	    UNPROTECT(1);
373
	    UNPROTECT(1);
257
	} else {
374
	} else {
258
	    PROTECT(s = allocVector(type, n));
375
	    PROTECT(s = allocVector(type, n));
259
	    cptr = (char**)p;
376
	    cptr = (char**)p;
260
	    for(i = 0 ; i < n ; i++) {
377
	    for(i = 0 ; i < n ; i++) {
261
		SET_STRING_ELT(s, i, mkChar(cptr[i]));
378
		SET_STRING_ELT(s, i, mkChar(cptr[i]));
262
	    }
379
	    }
263
	    UNPROTECT(1);
380
	    UNPROTECT(1);
264
	}
381
	}
265
	break;
382
	break;
266
    case VECSXP:
383
    case VECSXP:
267
	PROTECT(s = allocVector(VECSXP, n));
384
	PROTECT(s = allocVector(VECSXP, n));
268
	lptr = (SEXP*)p;
385
	lptr = (SEXP*)p;
269
	for (i = 0 ; i < n ; i++) {
386
	for (i = 0 ; i < n ; i++) {
270
	    SET_VECTOR_ELT(s, i, lptr[i]);
387
	    SET_VECTOR_ELT(s, i, lptr[i]);
271
	}
388
	}
272
	UNPROTECT(1);
389
	UNPROTECT(1);
273
	break;
390
	break;
274
    case LISTSXP:
391
    case LISTSXP:
275
	PROTECT(t = s = allocList(n));
392
	PROTECT(t = s = allocList(n));
276
	lptr = (SEXP*)p;
393
	lptr = (SEXP*)p;
277
	for(i=0 ; i<n ; i++) {
394
	for(i=0 ; i<n ; i++) {
278
	    SETCAR(t, lptr[i]);
395
	    SETCAR(t, lptr[i]);
279
	    t = CDR(t);
396
	    t = CDR(t);
280
	}
397
	}
281
	UNPROTECT(1);
398
	UNPROTECT(1);
282
    default:
399
    default:
283
	s = (SEXP)p;
400
	s = (SEXP)p;
284
    }
401
    }
285
    return s;
402
    return s;
286
}
403
}
287
 
404
 
288
#define THROW_REGISTRATION_TYPE_ERROR
405
#define THROW_REGISTRATION_TYPE_ERROR
289
 
406
 
290
#ifdef THROW_REGISTRATION_TYPE_ERROR
407
#ifdef THROW_REGISTRATION_TYPE_ERROR
291
static Rboolean
408
static Rboolean
292
comparePrimitiveTypes(R_NativePrimitiveArgType type, SEXP s, Rboolean dup)
409
comparePrimitiveTypes(R_NativePrimitiveArgType type, SEXP s, Rboolean dup)
293
{
410
{
294
   if(type == ANYSXP || TYPEOF(s) == type)
411
   if(type == ANYSXP || TYPEOF(s) == type)
295
      return(TRUE);
412
      return(TRUE);
296
 
413
 
297
   if(dup && type == SINGLESXP)
414
   if(dup && type == SINGLESXP)
298
      return(asLogical(getAttrib(s, install("Csingle"))) == TRUE);
415
      return(asLogical(getAttrib(s, install("Csingle"))) == TRUE);
299
 
416
 
300
   return(FALSE);
417
   return(FALSE);
301
}
418
}
302
#endif /* end of THROW_REGISTRATION_TYPE_ERROR */
419
#endif /* end of THROW_REGISTRATION_TYPE_ERROR */
303
 
420
 
304
 
421
 
305
/* Foreign Function Interface.  This code allows a user to call C */
422
/* Foreign Function Interface.  This code allows a user to call C */
306
/* or Fortran code which is either statically or dynamically linked. */
423
/* or Fortran code which is either statically or dynamically linked. */
307
 
424
 
308
/* NB: despite its name, this leaves NAOK and DUP arguments on the list */
425
/* NB: despite its name, this leaves NAOK and DUP arguments on the list */
309
 
426
 
310
/* find NAOK and DUP, find and remove PACKAGE */
427
/* find NAOK and DUP, find and remove PACKAGE */
311
static SEXP naokfind(SEXP args, int * len, int *naok, int *dup)
428
static SEXP naokfind(SEXP args, int * len, int *naok, int *dup, DllReference *dll)
312
{
429
{
313
    SEXP s, prev;
430
    SEXP s, prev;
314
    int nargs=0, naokused=0, dupused=0, pkgused=0;
431
    int nargs=0, naokused=0, dupused=0, pkgused=0;
315
    char *p;
432
    char *p;
316
 
433
 
317
    *naok = 0;
434
    *naok = 0;
318
    *dup = 1;
435
    *dup = 1;
319
    *len = 0;
436
    *len = 0;
320
    for(s = args, prev=args; s != R_NilValue;) {
437
    for(s = args, prev=args; s != R_NilValue;) {
321
	if(TAG(s) == NaokSymbol) {
438
	if(TAG(s) == NaokSymbol) {
322
	    *naok = asLogical(CAR(s));
439
	    *naok = asLogical(CAR(s));
323
	    /* SETCDR(prev, s = CDR(s)); */
440
	    /* SETCDR(prev, s = CDR(s)); */
324
	    if(naokused++ == 1) warning("NAOK used more than once");
441
	    if(naokused++ == 1) warning("NAOK used more than once");
325
	} else if(TAG(s) == DupSymbol) {
442
	} else if(TAG(s) == DupSymbol) {
326
	    *dup = asLogical(CAR(s));
443
	    *dup = asLogical(CAR(s));
327
	    /* SETCDR(prev, s = CDR(s)); */
444
	    /* SETCDR(prev, s = CDR(s)); */
328
	    if(dupused++ == 1) warning("DUP used more than once");
445
	    if(dupused++ == 1) warning("DUP used more than once");
329
	} else if(TAG(s) == PkgSymbol) {
446
	} else if(TAG(s) == PkgSymbol) {
-
 
447
	    dll->obj = CAR(s);
-
 
448
	    if(TYPEOF(CAR(s)) == STRSXP) {
330
	    p = CHAR(STRING_ELT(CAR(s), 0));
449
		p = CHAR(STRING_ELT(CAR(s), 0));
331
	    if(strlen(p) > PATH_MAX - 1)
450
		if(strlen(p) > PATH_MAX - 1)
332
		error("DLL name is too long");
451
		    error("DLL name is too long");
-
 
452
		dll->type = FILENAME;
333
	    strcpy(DLLname, p);
453
		strcpy(dll->DLLname, p);
334
	    if(pkgused++ > 1) warning("PACKAGE used more than once");
454
		if(pkgused++ > 1) warning("PACKAGE used more than once");
335
	    /* More generally, this should allow us to process
455
		/* More generally, this should allow us to process
336
               any additional arguments and not insist that PACKAGE
456
		   any additional arguments and not insist that PACKAGE
337
               be the last argument.
457
		   be the last argument.
-
 
458
		*/
338
             */
459
	    } else {
-
 
460
		    /* Have a DLL object*/
-
 
461
	        if(TYPEOF(CAR(s)) == EXTPTRSXP) {
-
 
462
		    dll->dll = (HINSTANCE) R_ExternalPtrAddr(CAR(s));
-
 
463
		    dll->type = DLL_HANDLE;
-
 
464
		} else if(TYPEOF(CAR(s)) == VECSXP) {
-
 
465
		    dll->type = R_OBJECT;
-
 
466
		    dll->obj = s;
-
 
467
		    strcpy(dll->DLLname, CHAR(STRING_ELT(VECTOR_ELT(CAR(s), 1), 0)));
-
 
468
		    dll->dll = (HINSTANCE) R_ExternalPtrAddr(VECTOR_ELT(s, 4));
-
 
469
		}
-
 
470
	    }
339
	} else {
471
	} else {
340
	    nargs++;
472
	    nargs++;
341
	    prev = s;
473
	    prev = s;
342
	    s = CDR(s);
474
	    s = CDR(s);
343
	    continue;
475
	    continue;
344
	}
476
	}
345
	if(s == args)
477
	if(s == args)
346
	    args = s = CDR(s);
478
	    args = s = CDR(s);
347
	else
479
	else
348
	    SETCDR(prev, s = CDR(s));
480
	    SETCDR(prev, s = CDR(s));
349
    }
481
    }
350
    *len = nargs;
482
    *len = nargs;
351
    return args;
483
    return args;
352
}
484
}
353
 
485
 
354
static void setDLLname(SEXP s, char *DLLName)
486
static void setDLLname(SEXP s, char *DLLname)
355
{
487
{
356
    SEXP ss = CAR(s); char *name;
488
    SEXP ss = CAR(s); char *name;
357
    if(TYPEOF(ss) != STRSXP || length(ss) != 1)
489
    if(TYPEOF(ss) != STRSXP || length(ss) != 1)
358
	error("PACKAGE argument must be a single character string");
490
	error("PACKAGE argument must be a single character string");
359
    name = CHAR(STRING_ELT(ss, 0));
491
    name = CHAR(STRING_ELT(ss, 0));
360
    /* allow the package: form of the name, as returned by find */
492
    /* allow the package: form of the name, as returned by find */
361
    if(strncmp(name, "package:", 8) == 0)
493
    if(strncmp(name, "package:", 8) == 0)
362
	name += 8;
494
	name += 8;
363
    if(strlen(name) > PATH_MAX - 1)
495
    if(strlen(name) > PATH_MAX - 1)
364
	error("PACKAGE argument is too long");
496
	error("PACKAGE argument is too long");
365
    strcpy(DLLname, name);
497
    strcpy(DLLname, name);
366
}
498
}
367
 
499
 
368
static SEXP pkgtrim(SEXP args)
500
static SEXP pkgtrim(SEXP args, DllReference *dll)
369
{
501
{
370
    SEXP s, ss;
502
    SEXP s, ss;
371
    int pkgused=0;
503
    int pkgused=0;
372
 
504
 
373
    for(s = args ; s != R_NilValue;) {
505
    for(s = args ; s != R_NilValue;) {
374
	ss = CDR(s);
506
	ss = CDR(s);
375
	/* Look for PACKAGE=. We look at the next arg, unless
507
	/* Look for PACKAGE=. We look at the next arg, unless
376
	   this is the last one (which will only happen for one arg),
508
	   this is the last one (which will only happen for one arg),
377
	   and remove it */
509
	   and remove it */
378
	if(ss == R_NilValue && TAG(s) == PkgSymbol) {
510
	if(ss == R_NilValue && TAG(s) == PkgSymbol) {
379
	    if(pkgused++ == 1) warning("PACKAGE used more than once");
511
	    if(pkgused++ == 1) warning("PACKAGE used more than once");
380
	    setDLLname(s, DLLname);
512
	    setDLLname(s, dll->DLLname);
-
 
513
	    dll->type = FILENAME;
381
	    return R_NilValue;
514
	    return R_NilValue;
382
	}
515
	}
383
	if(TAG(ss) == PkgSymbol) {
516
	if(TAG(ss) == PkgSymbol) {
384
	    if(pkgused++ == 1) warning("PACKAGE used more than once");
517
	    if(pkgused++ == 1) warning("PACKAGE used more than once");
385
	    setDLLname(ss, DLLname);
518
	    setDLLname(ss, dll->DLLname);
-
 
519
	    dll->type = FILENAME;
386
	    SETCDR(s, CDR(ss));
520
	    SETCDR(s, CDR(ss));
387
	}
521
	}
388
	s = CDR(s);
522
	s = CDR(s);
389
    }
523
    }
390
    return args;
524
    return args;
391
}
525
}
392
 
526
 
393
#define MAX_ARGS 65
-
 
-
 
527
 
394
 
528
 
395
SEXP do_symbol(SEXP call, SEXP op, SEXP args, SEXP env)
529
SEXP do_symbol(SEXP call, SEXP op, SEXP args, SEXP env)
396
{
530
{
397
    char buf[128], *p, *q;
531
    char buf[128], *p, *q;
398
    checkArity(op, args);
532
    checkArity(op, args);
399
    if(!isValidString(CAR(args)))
533
    if(!isValidString(CAR(args)))
400
	errorcall(call, R_MSG_IA);
534
	errorcall(call, R_MSG_IA);
401
    p = CHAR(STRING_ELT(CAR(args), 0));
535
    p = CHAR(STRING_ELT(CAR(args), 0));
402
    q = buf;
536
    q = buf;
403
    while ((*q = *p) != '\0') {
537
    while ((*q = *p) != '\0') {
404
	p++;
538
	p++;
405
	q++;
539
	q++;
406
    }
540
    }
407
#ifdef HAVE_F77_UNDERSCORE
541
#ifdef HAVE_F77_UNDERSCORE
408
    if(PRIMVAL(op)) {
542
    if(PRIMVAL(op)) {
409
	*q++ = '_';
543
	*q++ = '_';
410
	*q = '\0';
544
	*q = '\0';
411
    }
545
    }
412
#endif
546
#endif
413
    return mkString(buf);
547
    return mkString(buf);
414
}
548
}
415
 
549
 
416
SEXP do_isloaded(SEXP call, SEXP op, SEXP args, SEXP env)
550
SEXP do_isloaded(SEXP call, SEXP op, SEXP args, SEXP env)
417
{
551
{
418
    SEXP ans;
552
    SEXP ans;
419
    char *sym, *pkg= "";
553
    char *sym, *pkg= "";
420
    int val = 1, nargs = length(args);
554
    int val = 1, nargs = length(args);
421
 
555
 
422
    if (nargs < 1) errorcall(call, "no arguments supplied");
556
    if (nargs < 1) errorcall(call, "no arguments supplied");
423
    if (nargs > 2) errorcall(call, "too many arguments");
557
    if (nargs > 2) errorcall(call, "too many arguments");
424
 
558
 
425
    if(!isValidString(CAR(args)))
559
    if(!isValidString(CAR(args)))
426
	errorcall(call, R_MSG_IA);
560
	errorcall(call, R_MSG_IA);
427
    sym = CHAR(STRING_ELT(CAR(args), 0));
561
    sym = CHAR(STRING_ELT(CAR(args), 0));
428
    if(nargs == 2) {
562
    if(nargs == 2) {
429
	if(!isValidString(CADR(args)))
563
	if(!isValidString(CADR(args)))
430
	    errorcall(call, R_MSG_IA);
564
	    errorcall(call, R_MSG_IA);
431
	pkg = CHAR(STRING_ELT(CADR(args), 0));
565
	pkg = CHAR(STRING_ELT(CADR(args), 0));
432
    }
566
    }
433
    if (!(R_FindSymbol(sym, pkg, NULL))) val = 0;
567
    if (!(R_FindSymbol(sym, pkg, NULL))) val = 0;
434
    ans = allocVector(LGLSXP, 1);
568
    ans = allocVector(LGLSXP, 1);
435
    LOGICAL(ans)[0] = val;
569
    LOGICAL(ans)[0] = val;
436
    return ans;
570
    return ans;
437
}
571
}
438
 
572
 
439
/*   Call dynamically loaded "internal" functions */
573
/*   Call dynamically loaded "internal" functions */
440
/*   code by Jean Meloche <jean@stat.ubc.ca> */
574
/*   code by Jean Meloche <jean@stat.ubc.ca> */
441
 
575
 
442
SEXP do_External(SEXP call, SEXP op, SEXP args, SEXP env)
576
SEXP do_External(SEXP call, SEXP op, SEXP args, SEXP env)
443
{
577
{
444
    DL_FUNC fun;
578
    DL_FUNC fun = NULL;
445
    SEXP retval;
579
    SEXP retval;
446
    R_RegisteredNativeSymbol symbol = {R_EXTERNAL_SYM, {NULL}, NULL};
580
    R_RegisteredNativeSymbol symbol = {R_EXTERNAL_SYM, {NULL}, NULL};
447
    /* I don't like this messing with vmax <TSL> */
581
    /* I don't like this messing with vmax <TSL> */
448
    /* But it is needed for clearing R_alloc and to be like .Call <BDR>*/
582
    /* But it is needed for clearing R_alloc and to be like .Call <BDR>*/
449
    char *vmax = vmaxget();
583
    char *vmax = vmaxget(), buf[128];
450
 
584
 
451
    op = CAR(args);
-
 
452
    if (!isValidString(op))
-
 
453
	errorcall(call, "function name must be a string (of length 1)");
-
 
454
    if (PkgSymbol == NULL) PkgSymbol = install("PACKAGE");
-
 
455
    strcpy(DLLname, "");
-
 
456
    args = pkgtrim(args);
-
 
457
 
-
 
458
    if (!(fun=R_FindSymbol(CHAR(STRING_ELT(op, 0)), DLLname, NULL))) {
585
    args = resolveNativeRoutine(args, &fun, &symbol, buf, NULL, NULL, NULL, call);
459
	if(strlen(DLLname))
-
 
460
	    errorcall(call,
-
 
461
		      ".External function name not in DLL for package %s", 
-
 
462
		      DLLname);
-
 
463
	else
-
 
464
	    errorcall(call, ".External function name not in load table");
-
 
465
    }
-
 
466
 
586
 
-
 
587
    /* Some external symbols that are registered may have 0 as the expected number of arguments.
-
 
588
       We may want a warning here. However, the number of values may vary across calls
-
 
589
       and that is why people use the .External() mechanism.  So perhaps we should just kill this 
-
 
590
       check. */
-
 
591
#ifdef CHECK_EXTERNAL_ARG_COUNT         /* Off by default. */
467
    if(symbol.symbol.external && symbol.symbol.external->numArgs > -1) {
592
    if(symbol.symbol.external && symbol.symbol.external->numArgs > -1) {
468
	if(symbol.symbol.external->numArgs != length(args))
593
	if(symbol.symbol.external->numArgs != length(args))
469
	    error("Incorrect number of arguments (%d), expecting %d for %s",
594
	    error("Incorrect number of arguments (%d), expecting %d for %s",
470
		  length(args), symbol.symbol.external->numArgs, CHAR(STRING_ELT(op, 0)));
595
		  length(args), symbol.symbol.external->numArgs, CHAR(STRING_ELT(op, 0)));
471
    }
596
    }
-
 
597
#endif
-
 
598
 
472
    retval = (SEXP)fun(args);
599
    retval = (SEXP)fun(args);
473
    vmaxset(vmax);
600
    vmaxset(vmax);
474
    return retval;
601
    return retval;
475
}
602
}
476
 
603
 
477
 
604
 
478
/* .Call(name, <args>) */
605
/* .Call(name, <args>) */
479
SEXP do_dotcall(SEXP call, SEXP op, SEXP args, SEXP env)
606
SEXP do_dotcall(SEXP call, SEXP op, SEXP args, SEXP env)
480
{
607
{
481
    DL_FUNC fun;
608
    DL_FUNC fun = NULL;
482
    SEXP retval, cargs[MAX_ARGS], pargs;
609
    SEXP retval, cargs[MAX_ARGS], pargs;
483
    R_RegisteredNativeSymbol symbol = {R_CALL_SYM, {NULL}, NULL};
610
    R_RegisteredNativeSymbol symbol = {R_CALL_SYM, {NULL}, NULL};
484
    int nargs;
611
    int nargs;
485
    char *vmax = vmaxget();
612
    char *vmax = vmaxget();
486
    op = CAR(args);
613
    char buf[128];
487
    if (!isValidString(op))
-
 
488
	errorcall(call, "function name must be a string (of length 1)");
-
 
489
 
614
 
490
    if (PkgSymbol == NULL) PkgSymbol = install("PACKAGE");
-
 
491
    strcpy(DLLname, "");
-
 
492
    args = pkgtrim(args);
-
 
493
 
-
 
494
    if (!(fun=R_FindSymbol(CHAR(STRING_ELT(op, 0)), DLLname, &symbol))) {
615
    args = resolveNativeRoutine(args, &fun, &symbol, buf, NULL, NULL, NULL, call);
495
	if(strlen(DLLname))
-
 
496
	    errorcall(call, ".Call function name not in DLL for package %s", 
-
 
497
		      DLLname);
-
 
498
	else
-
 
499
	    errorcall(call, ".Call function name not in load table");
-
 
500
    }
-
 
501
    args = CDR(args);
616
    args = CDR(args);
502
 
617
 
503
    for(nargs = 0, pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
618
    for(nargs = 0, pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
504
        if (nargs == MAX_ARGS)
619
        if (nargs == MAX_ARGS)
505
            errorcall(call, "too many arguments in foreign function call");
620
            errorcall(call, "too many arguments in foreign function call");
506
	cargs[nargs] = CAR(pargs);
621
	cargs[nargs] = CAR(pargs);
507
	nargs++;
622
	nargs++;
508
    }
623
    }
509
    if(symbol.symbol.call && symbol.symbol.call->numArgs > -1) {
624
    if(symbol.symbol.call && symbol.symbol.call->numArgs > -1) {
510
	if(symbol.symbol.call->numArgs != nargs)
625
	if(symbol.symbol.call->numArgs != nargs)
511
	    error("Incorrect number of arguments (%d), expecting %d for %s",
626
	    error("Incorrect number of arguments (%d), expecting %d for %s",
512
		  nargs, symbol.symbol.call->numArgs, CHAR(STRING_ELT(op, 0)));
627
		  nargs, symbol.symbol.call->numArgs, CHAR(STRING_ELT(op, 0)));
513
    }
628
    }
514
 
629
 
515
    retval = R_NilValue;	/* -Wall */
630
    retval = R_NilValue;	/* -Wall */
516
    switch (nargs) {
631
    switch (nargs) {
517
    case 0:
632
    case 0:
518
	retval = (SEXP)fun();
633
	retval = (SEXP)fun();
519
	break;
634
	break;
520
    case 1:
635
    case 1:
521
	retval = (SEXP)fun(cargs[0]);
636
	retval = (SEXP)fun(cargs[0]);
522
	break;
637
	break;
523
    case 2:
638
    case 2:
524
	retval = (SEXP)fun(cargs[0], cargs[1]);
639
	retval = (SEXP)fun(cargs[0], cargs[1]);
525
	break;
640
	break;
526
    case 3:
641
    case 3:
527
	retval = (SEXP)fun(cargs[0], cargs[1], cargs[2]);
642
	retval = (SEXP)fun(cargs[0], cargs[1], cargs[2]);
528
	break;
643
	break;
529
    case 4:
644
    case 4:
530
	retval = (SEXP)fun(cargs[0], cargs[1], cargs[2], cargs[3]);
645
	retval = (SEXP)fun(cargs[0], cargs[1], cargs[2], cargs[3]);
531
	break;
646
	break;
532
    case 5:
647
    case 5:
533
	retval = (SEXP)fun(
648
	retval = (SEXP)fun(
534
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4]);
649
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4]);
535
	break;
650
	break;
536
    case 6:
651
    case 6:
537
	retval = (SEXP)fun(
652
	retval = (SEXP)fun(
538
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
653
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
539
	    cargs[5]);
654
	    cargs[5]);
540
	break;
655
	break;
541
    case 7:
656
    case 7:
542
	retval = (SEXP)fun(
657
	retval = (SEXP)fun(
543
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
658
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
544
	    cargs[5],  cargs[6]);
659
	    cargs[5],  cargs[6]);
545
	break;
660
	break;
546
    case 8:
661
    case 8:
547
	retval = (SEXP)fun(
662
	retval = (SEXP)fun(
548
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
663
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
549
	    cargs[5],  cargs[6],  cargs[7]);
664
	    cargs[5],  cargs[6],  cargs[7]);
550
	break;
665
	break;
551
    case 9:
666
    case 9:
552
	retval = (SEXP)fun(
667
	retval = (SEXP)fun(
553
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
668
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
554
	    cargs[5],  cargs[6],  cargs[7],  cargs[8]);
669
	    cargs[5],  cargs[6],  cargs[7],  cargs[8]);
555
	break;
670
	break;
556
    case 10:
671
    case 10:
557
	retval = (SEXP)fun(
672
	retval = (SEXP)fun(
558
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
673
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
559
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9]);
674
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9]);
560
	break;
675
	break;
561
    case 11:
676
    case 11:
562
	retval = (SEXP)fun(
677
	retval = (SEXP)fun(
563
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
678
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
564
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
679
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
565
	    cargs[10]);
680
	    cargs[10]);
566
	break;
681
	break;
567
    case 12:
682
    case 12:
568
	retval = (SEXP)fun(
683
	retval = (SEXP)fun(
569
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
684
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
570
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
685
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
571
	    cargs[10], cargs[11]);
686
	    cargs[10], cargs[11]);
572
	break;
687
	break;
573
    case 13:
688
    case 13:
574
	retval = (SEXP)fun(
689
	retval = (SEXP)fun(
575
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
690
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
576
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
691
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
577
	    cargs[10], cargs[11], cargs[12]);
692
	    cargs[10], cargs[11], cargs[12]);
578
	break;
693
	break;
579
    case 14:
694
    case 14:
580
	retval = (SEXP)fun(
695
	retval = (SEXP)fun(
581
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
696
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
582
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
697
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
583
	    cargs[10], cargs[11], cargs[12], cargs[13]);
698
	    cargs[10], cargs[11], cargs[12], cargs[13]);
584
	break;
699
	break;
585
    case 15:
700
    case 15:
586
	retval = (SEXP)fun(
701
	retval = (SEXP)fun(
587
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
702
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
588
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
703
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
589
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14]);
704
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14]);
590
	break;
705
	break;
591
    case 16:
706
    case 16:
592
	retval = (SEXP)fun(
707
	retval = (SEXP)fun(
593
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
708
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
594
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
709
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
595
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
710
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
596
	    cargs[15]);
711
	    cargs[15]);
597
	break;
712
	break;
598
    case 17:
713
    case 17:
599
	retval = (SEXP)fun(
714
	retval = (SEXP)fun(
600
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
715
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
601
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
716
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
602
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
717
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
603
	    cargs[15], cargs[16]);
718
	    cargs[15], cargs[16]);
604
	break;
719
	break;
605
    case 18:
720
    case 18:
606
	retval = (SEXP)fun(
721
	retval = (SEXP)fun(
607
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
722
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
608
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
723
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
609
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
724
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
610
	    cargs[15], cargs[16], cargs[17]);
725
	    cargs[15], cargs[16], cargs[17]);
611
	break;
726
	break;
612
    case 19:
727
    case 19:
613
	retval = (SEXP)fun(
728
	retval = (SEXP)fun(
614
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
729
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
615
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
730
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
616
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
731
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
617
	    cargs[15], cargs[16], cargs[17], cargs[18]);
732
	    cargs[15], cargs[16], cargs[17], cargs[18]);
618
	break;
733
	break;
619
    case 20:
734
    case 20:
620
	retval = (SEXP)fun(
735
	retval = (SEXP)fun(
621
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
736
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
622
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
737
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
623
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
738
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
624
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19]);
739
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19]);
625
	break;
740
	break;
626
    case 21:
741
    case 21:
627
	retval = (SEXP)fun(
742
	retval = (SEXP)fun(
628
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
743
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
629
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
744
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
630
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
745
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
631
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
746
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
632
	    cargs[20]);
747
	    cargs[20]);
633
	break;
748
	break;
634
    case 22:
749
    case 22:
635
	retval = (SEXP)fun(
750
	retval = (SEXP)fun(
636
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
751
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
637
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
752
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
638
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
753
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
639
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
754
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
640
	    cargs[20], cargs[21]);
755
	    cargs[20], cargs[21]);
641
	break;
756
	break;
642
    case 23:
757
    case 23:
643
	retval = (SEXP)fun(
758
	retval = (SEXP)fun(
644
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
759
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
645
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
760
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
646
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
761
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
647
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
762
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
648
	    cargs[20], cargs[21], cargs[22]);
763
	    cargs[20], cargs[21], cargs[22]);
649
	break;
764
	break;
650
    case 24:
765
    case 24:
651
	retval = (SEXP)fun(
766
	retval = (SEXP)fun(
652
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
767
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
653
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
768
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
654
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
769
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
655
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
770
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
656
	    cargs[20], cargs[21], cargs[22], cargs[23]);
771
	    cargs[20], cargs[21], cargs[22], cargs[23]);
657
	break;
772
	break;
658
    case 25:
773
    case 25:
659
	retval = (SEXP)fun(
774
	retval = (SEXP)fun(
660
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
775
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
661
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
776
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
662
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
777
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
663
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
778
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
664
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24]);
779
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24]);
665
	break;
780
	break;
666
    case 26:
781
    case 26:
667
	retval = (SEXP)fun(
782
	retval = (SEXP)fun(
668
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
783
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
669
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
784
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
670
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
785
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
671
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
786
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
672
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
787
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
673
	    cargs[25]);
788
	    cargs[25]);
674
	break;
789
	break;
675
    case 27:
790
    case 27:
676
	retval = (SEXP)fun(
791
	retval = (SEXP)fun(
677
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
792
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
678
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
793
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
679
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
794
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
680
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
795
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
681
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
796
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
682
	    cargs[25], cargs[26]);
797
	    cargs[25], cargs[26]);
683
	break;
798
	break;
684
    case 28:
799
    case 28:
685
	retval = (SEXP)fun(
800
	retval = (SEXP)fun(
686
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
801
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
687
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
802
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
688
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
803
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
689
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
804
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
690
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
805
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
691
	    cargs[25], cargs[26], cargs[27]);
806
	    cargs[25], cargs[26], cargs[27]);
692
	break;
807
	break;
693
    case 29:
808
    case 29:
694
	retval = (SEXP)fun(
809
	retval = (SEXP)fun(
695
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
810
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
696
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
811
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
697
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
812
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
698
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
813
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
699
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
814
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
700
	    cargs[25], cargs[26], cargs[27], cargs[28]);
815
	    cargs[25], cargs[26], cargs[27], cargs[28]);
701
	break;
816
	break;
702
    case 30:
817
    case 30:
703
	retval = (SEXP)fun(
818
	retval = (SEXP)fun(
704
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
819
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
705
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
820
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
706
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
821
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
707
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
822
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
708
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
823
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
709
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29]);
824
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29]);
710
	break;
825
	break;
711
    case 31:
826
    case 31:
712
	retval = (SEXP)fun(
827
	retval = (SEXP)fun(
713
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
828
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
714
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
829
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
715
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
830
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
716
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
831
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
717
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
832
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
718
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
833
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
719
	    cargs[30]);
834
	    cargs[30]);
720
	break;
835
	break;
721
    case 32:
836
    case 32:
722
	retval = (SEXP)fun(
837
	retval = (SEXP)fun(
723
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
838
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
724
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
839
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
725
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
840
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
726
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
841
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
727
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
842
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
728
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
843
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
729
	    cargs[30], cargs[31]);
844
	    cargs[30], cargs[31]);
730
	break;
845
	break;
731
    case 33:
846
    case 33:
732
	retval = (SEXP)fun(
847
	retval = (SEXP)fun(
733
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
848
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
734
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
849
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
735
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
850
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
736
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
851
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
737
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
852
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
738
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
853
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
739
	    cargs[30], cargs[31], cargs[32]);
854
	    cargs[30], cargs[31], cargs[32]);
740
	break;
855
	break;
741
    case 34:
856
    case 34:
742
	retval = (SEXP)fun(
857
	retval = (SEXP)fun(
743
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
858
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
744
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
859
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
745
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
860
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
746
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
861
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
747
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
862
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
748
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
863
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
749
	    cargs[30], cargs[31], cargs[32], cargs[33]);
864
	    cargs[30], cargs[31], cargs[32], cargs[33]);
750
	break;
865
	break;
751
    case 35:
866
    case 35:
752
	retval = (SEXP)fun(
867
	retval = (SEXP)fun(
753
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
868
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
754
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
869
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
755
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
870
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
756
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
871
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
757
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
872
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
758
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
873
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
759
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34]);
874
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34]);
760
	break;
875
	break;
761
    case 36:
876
    case 36:
762
	retval = (SEXP)fun(
877
	retval = (SEXP)fun(
763
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
878
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
764
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
879
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
765
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
880
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
766
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
881
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
767
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
882
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
768
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
883
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
769
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
884
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
770
	    cargs[35]);
885
	    cargs[35]);
771
	break;
886
	break;
772
    case 37:
887
    case 37:
773
	retval = (SEXP)fun(
888
	retval = (SEXP)fun(
774
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
889
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
775
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
890
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
776
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
891
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
777
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
892
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
778
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
893
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
779
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
894
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
780
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
895
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
781
	    cargs[35], cargs[36]);
896
	    cargs[35], cargs[36]);
782
	break;
897
	break;
783
    case 38:
898
    case 38:
784
	retval = (SEXP)fun(
899
	retval = (SEXP)fun(
785
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
900
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
786
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
901
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
787
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
902
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
788
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
903
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
789
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
904
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
790
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
905
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
791
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
906
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
792
	    cargs[35], cargs[36], cargs[37]);
907
	    cargs[35], cargs[36], cargs[37]);
793
	break;
908
	break;
794
    case 39:
909
    case 39:
795
	retval = (SEXP)fun(
910
	retval = (SEXP)fun(
796
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
911
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
797
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
912
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
798
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
913
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
799
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
914
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
800
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
915
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
801
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
916
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
802
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
917
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
803
	    cargs[35], cargs[36], cargs[37], cargs[38]);
918
	    cargs[35], cargs[36], cargs[37], cargs[38]);
804
	break;
919
	break;
805
    case 40:
920
    case 40:
806
	retval = (SEXP)fun(
921
	retval = (SEXP)fun(
807
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
922
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
808
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
923
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
809
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
924
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
810
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
925
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
811
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
926
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
812
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
927
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
813
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
928
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
814
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39]);
929
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39]);
815
	break;
930
	break;
816
    case 41:
931
    case 41:
817
	retval = (SEXP)fun(
932
	retval = (SEXP)fun(
818
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
933
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
819
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
934
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
820
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
935
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
821
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
936
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
822
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
937
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
823
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
938
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
824
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
939
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
825
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
940
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
826
	    cargs[40]);
941
	    cargs[40]);
827
	break;
942
	break;
828
    case 42:
943
    case 42:
829
	retval = (SEXP)fun(
944
	retval = (SEXP)fun(
830
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
945
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
831
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
946
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
832
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
947
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
833
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
948
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
834
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
949
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
835
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
950
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
836
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
951
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
837
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
952
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
838
	    cargs[40], cargs[41]);
953
	    cargs[40], cargs[41]);
839
	break;
954
	break;
840
    case 43:
955
    case 43:
841
	retval = (SEXP)fun(
956
	retval = (SEXP)fun(
842
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
957
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
843
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
958
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
844
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
959
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
845
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
960
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
846
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
961
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
847
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
962
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
848
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
963
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
849
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
964
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
850
	    cargs[40], cargs[41], cargs[42]);
965
	    cargs[40], cargs[41], cargs[42]);
851
	break;
966
	break;
852
    case 44:
967
    case 44:
853
	retval = (SEXP)fun(
968
	retval = (SEXP)fun(
854
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
969
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
855
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
970
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
856
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
971
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
857
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
972
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
858
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
973
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
859
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
974
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
860
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
975
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
861
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
976
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
862
	    cargs[40], cargs[41], cargs[42], cargs[43]);
977
	    cargs[40], cargs[41], cargs[42], cargs[43]);
863
	break;
978
	break;
864
    case 45:
979
    case 45:
865
	retval = (SEXP)fun(
980
	retval = (SEXP)fun(
866
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
981
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
867
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
982
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
868
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
983
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
869
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
984
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
870
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
985
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
871
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
986
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
872
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
987
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
873
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
988
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
874
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44]);
989
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44]);
875
	break;
990
	break;
876
    case 46:
991
    case 46:
877
	retval = (SEXP)fun(
992
	retval = (SEXP)fun(
878
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
993
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
879
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
994
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
880
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
995
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
881
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
996
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
882
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
997
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
883
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
998
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
884
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
999
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
885
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1000
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
886
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1001
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
887
	    cargs[45]);
1002
	    cargs[45]);
888
	break;
1003
	break;
889
    case 47:
1004
    case 47:
890
	retval = (SEXP)fun(
1005
	retval = (SEXP)fun(
891
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1006
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
892
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1007
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
893
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1008
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
894
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1009
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
895
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1010
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
896
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1011
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
897
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1012
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
898
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1013
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
899
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1014
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
900
	    cargs[45], cargs[46]);
1015
	    cargs[45], cargs[46]);
901
	break;
1016
	break;
902
    case 48:
1017
    case 48:
903
	retval = (SEXP)fun(
1018
	retval = (SEXP)fun(
904
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1019
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
905
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1020
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
906
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1021
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
907
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1022
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
908
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1023
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
909
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1024
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
910
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1025
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
911
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1026
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
912
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1027
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
913
	    cargs[45], cargs[46], cargs[47]);
1028
	    cargs[45], cargs[46], cargs[47]);
914
	break;
1029
	break;
915
    case 49:
1030
    case 49:
916
	retval = (SEXP)fun(
1031
	retval = (SEXP)fun(
917
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1032
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
918
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1033
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
919
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1034
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
920
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1035
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
921
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1036
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
922
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1037
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
923
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1038
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
924
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1039
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
925
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1040
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
926
	    cargs[45], cargs[46], cargs[47], cargs[48]);
1041
	    cargs[45], cargs[46], cargs[47], cargs[48]);
927
	break;
1042
	break;
928
    case 50:
1043
    case 50:
929
	retval = (SEXP)fun(
1044
	retval = (SEXP)fun(
930
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1045
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
931
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1046
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
932
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1047
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
933
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1048
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
934
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1049
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
935
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1050
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
936
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1051
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
937
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1052
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
938
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1053
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
939
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49]);
1054
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49]);
940
	break;
1055
	break;
941
    case 51:
1056
    case 51:
942
	retval = (SEXP)fun(
1057
	retval = (SEXP)fun(
943
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1058
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
944
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1059
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
945
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1060
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
946
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1061
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
947
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1062
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
948
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1063
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
949
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1064
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
950
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1065
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
951
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1066
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
952
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1067
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
953
	    cargs[50]);
1068
	    cargs[50]);
954
	break;
1069
	break;
955
    case 52:
1070
    case 52:
956
	retval = (SEXP)fun(
1071
	retval = (SEXP)fun(
957
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1072
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
958
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1073
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
959
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1074
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
960
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1075
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
961
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1076
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
962
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1077
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
963
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1078
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
964
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1079
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
965
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1080
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
966
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1081
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
967
	    cargs[50], cargs[51]);
1082
	    cargs[50], cargs[51]);
968
	break;
1083
	break;
969
    case 53:
1084
    case 53:
970
	retval = (SEXP)fun(
1085
	retval = (SEXP)fun(
971
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1086
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
972
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1087
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
973
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1088
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
974
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1089
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
975
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1090
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
976
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1091
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
977
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1092
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
978
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1093
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
979
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1094
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
980
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1095
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
981
	    cargs[50], cargs[51], cargs[52]);
1096
	    cargs[50], cargs[51], cargs[52]);
982
	break;
1097
	break;
983
    case 54:
1098
    case 54:
984
	retval = (SEXP)fun(
1099
	retval = (SEXP)fun(
985
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1100
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
986
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1101
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
987
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1102
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
988
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1103
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
989
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1104
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
990
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1105
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
991
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1106
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
992
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1107
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
993
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1108
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
994
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1109
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
995
	    cargs[50], cargs[51], cargs[52], cargs[53]);
1110
	    cargs[50], cargs[51], cargs[52], cargs[53]);
996
	break;
1111
	break;
997
    case 55:
1112
    case 55:
998
	retval = (SEXP)fun(
1113
	retval = (SEXP)fun(
999
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1114
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1000
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1115
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1001
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1116
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1002
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1117
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1003
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1118
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1004
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1119
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1005
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1120
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1006
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1121
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1007
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1122
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1008
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1123
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1009
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54]);
1124
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54]);
1010
	break;
1125
	break;
1011
    case 56:
1126
    case 56:
1012
	retval = (SEXP)fun(
1127
	retval = (SEXP)fun(
1013
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1128
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1014
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1129
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1015
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1130
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1016
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1131
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1017
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1132
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1018
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1133
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1019
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1134
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1020
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1135
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1021
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1136
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1022
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1137
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1023
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1138
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1024
	    cargs[55]);
1139
	    cargs[55]);
1025
	break;
1140
	break;
1026
    case 57:
1141
    case 57:
1027
	retval = (SEXP)fun(
1142
	retval = (SEXP)fun(
1028
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1143
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1029
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1144
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1030
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1145
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1031
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1146
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1032
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1147
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1033
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1148
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1034
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1149
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1035
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1150
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1036
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1151
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1037
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1152
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1038
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1153
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1039
	    cargs[55], cargs[56]);
1154
	    cargs[55], cargs[56]);
1040
	break;
1155
	break;
1041
    case 58:
1156
    case 58:
1042
	retval = (SEXP)fun(
1157
	retval = (SEXP)fun(
1043
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1158
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1044
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1159
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1045
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1160
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1046
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1161
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1047
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1162
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1048
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1163
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1049
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1164
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1050
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1165
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1051
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1166
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1052
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1167
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1053
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1168
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1054
	    cargs[55], cargs[56], cargs[57]);
1169
	    cargs[55], cargs[56], cargs[57]);
1055
	break;
1170
	break;
1056
    case 59:
1171
    case 59:
1057
	retval = (SEXP)fun(
1172
	retval = (SEXP)fun(
1058
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1173
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1059
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1174
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1060
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1175
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1061
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1176
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1062
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1177
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1063
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1178
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1064
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1179
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1065
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1180
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1066
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1181
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1067
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1182
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1068
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1183
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1069
	    cargs[55], cargs[56], cargs[57], cargs[58]);
1184
	    cargs[55], cargs[56], cargs[57], cargs[58]);
1070
	break;
1185
	break;
1071
    case 60:
1186
    case 60:
1072
	retval = (SEXP)fun(
1187
	retval = (SEXP)fun(
1073
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1188
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1074
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1189
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1075
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1190
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1076
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1191
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1077
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1192
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1078
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1193
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1079
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1194
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1080
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1195
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1081
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1196
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1082
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1197
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1083
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1198
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1084
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59]);
1199
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59]);
1085
	break;
1200
	break;
1086
    case 61:
1201
    case 61:
1087
	retval = (SEXP)fun(
1202
	retval = (SEXP)fun(
1088
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1203
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1089
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1204
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1090
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1205
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1091
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1206
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1092
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1207
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1093
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1208
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1094
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1209
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1095
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1210
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1096
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1211
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1097
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1212
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1098
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1213
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1099
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1214
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1100
	    cargs[60]);
1215
	    cargs[60]);
1101
	break;
1216
	break;
1102
    case 62:
1217
    case 62:
1103
	retval = (SEXP)fun(
1218
	retval = (SEXP)fun(
1104
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1219
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1105
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1220
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1106
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1221
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1107
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1222
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1108
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1223
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1109
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1224
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1110
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1225
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1111
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1226
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1112
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1227
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1113
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1228
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1114
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1229
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1115
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1230
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1116
	    cargs[60], cargs[61]);
1231
	    cargs[60], cargs[61]);
1117
	break;
1232
	break;
1118
    case 63:
1233
    case 63:
1119
	retval = (SEXP)fun(
1234
	retval = (SEXP)fun(
1120
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1235
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1121
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1236
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1122
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1237
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1123
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1238
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1124
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1239
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1125
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1240
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1126
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1241
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1127
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1242
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1128
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1243
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1129
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1244
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1130
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1245
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1131
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1246
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1132
	    cargs[60], cargs[61], cargs[62]);
1247
	    cargs[60], cargs[61], cargs[62]);
1133
	break;
1248
	break;
1134
    case 64:
1249
    case 64:
1135
	retval = (SEXP)fun(
1250
	retval = (SEXP)fun(
1136
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1251
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1137
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1252
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1138
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1253
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1139
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1254
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1140
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1255
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1141
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1256
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1142
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1257
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1143
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1258
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1144
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1259
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1145
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1260
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1146
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1261
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1147
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1262
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1148
	    cargs[60], cargs[61], cargs[62], cargs[63]);
1263
	    cargs[60], cargs[61], cargs[62], cargs[63]);
1149
	break;
1264
	break;
1150
    case 65:
1265
    case 65:
1151
	retval = (SEXP)fun(
1266
	retval = (SEXP)fun(
1152
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1267
	    cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1153
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1268
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1154
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1269
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1155
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1270
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1156
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1271
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1157
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1272
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1158
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1273
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1159
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1274
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1160
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1275
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1161
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1276
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1162
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1277
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1163
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1278
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1164
	    cargs[60], cargs[61], cargs[62], cargs[63], cargs[64]);
1279
	    cargs[60], cargs[61], cargs[62], cargs[63], cargs[64]);
1165
	break;
1280
	break;
1166
    default:
1281
    default:
1167
	errorcall(call, "too many arguments, sorry");
1282
	errorcall(call, "too many arguments, sorry");
1168
    }
1283
    }
1169
    vmaxset(vmax);
1284
    vmaxset(vmax);
1170
    return retval;
1285
    return retval;
1171
}
1286
}
1172
 
1287
 
1173
/*  Call dynamically loaded "internal" graphics functions */
1288
/*  Call dynamically loaded "internal" graphics functions */
1174
/*  .External.gr  and  .Call.gr */
1289
/*  .External.gr  and  .Call.gr */
1175
 
1290
 
1176
SEXP do_Externalgr(SEXP call, SEXP op, SEXP args, SEXP env)
1291
SEXP do_Externalgr(SEXP call, SEXP op, SEXP args, SEXP env)
1177
{
1292
{
1178
    SEXP retval = do_External(call, op, args, env);
1293
    SEXP retval = do_External(call, op, args, env);
1179
    if (call != R_NilValue) {
1294
    if (call != R_NilValue) {
1180
        DevDesc *dd = CurrentDevice();
1295
        DevDesc *dd = CurrentDevice();
1181
        GCheckState(dd);
1296
        GCheckState(dd);
1182
	recordGraphicOperation(op, args, dd);
1297
	recordGraphicOperation(op, args, dd);
1183
    }
1298
    }
1184
    return retval;
1299
    return retval;
1185
}
1300
}
1186
 
1301
 
1187
SEXP do_dotcallgr(SEXP call, SEXP op, SEXP args, SEXP env)
1302
SEXP do_dotcallgr(SEXP call, SEXP op, SEXP args, SEXP env)
1188
{
1303
{
1189
    SEXP retval = do_dotcall(call, op, args, env);
1304
    SEXP retval = do_dotcall(call, op, args, env);
1190
    if (call != R_NilValue) {
1305
    if (call != R_NilValue) {
1191
        DevDesc *dd = CurrentDevice();
1306
        DevDesc *dd = CurrentDevice();
1192
	GCheckState(dd);
1307
	GCheckState(dd);
1193
	recordGraphicOperation(op, args, dd);
1308
	recordGraphicOperation(op, args, dd);
1194
    }
1309
    }
1195
    return retval;
1310
    return retval;
1196
}
1311
}
1197
 
1312
 
1198
 
1313
 
-
 
1314
 
-
 
1315
static SEXP
-
 
1316
Rf_getCallingDLL()
-
 
1317
{
-
 
1318
    SEXP e, ans;
-
 
1319
    PROTECT(e = allocVector(LANGSXP, 1));
-
 
1320
    SETCAR(e, Rf_install("getCallingDLL"));
-
 
1321
    ans = eval(e,  R_GlobalEnv);
-
 
1322
 
-
 
1323
    UNPROTECT(1);
-
 
1324
    return(ans);
-
 
1325
}
-
 
1326
 
-
 
1327
 
-
 
1328
/*
-
 
1329
  We are given the PACKAGE argument in dll.obj
-
 
1330
  and we can try to figure out how to resolve this.
-
 
1331
  0) dll.obj is NULL.  Then find the environment of the 
-
 
1332
   calling function and if it is a namespace, get the 
-
 
1333
   
-
 
1334
  1) dll.obj is a DLLInfo object
-
 
1335
*/
-
 
1336
static DL_FUNC
-
 
1337
R_FindNativeSymbolFromDLL(char *name, DllReference *dll, R_RegisteredNativeSymbol *symbol)
-
 
1338
{
-
 
1339
    int numProtects = 0;
-
 
1340
    DllInfo *info;
-
 
1341
    DL_FUNC fun = NULL;
-
 
1342
 
-
 
1343
    if(dll->obj == NULL) {
-
 
1344
	dll->obj = Rf_getCallingDLL();
-
 
1345
	PROTECT(dll->obj); numProtects++;
-
 
1346
    }
-
 
1347
 
-
 
1348
    if(inherits(dll->obj, "DLLInfo")) {
-
 
1349
	SEXP tmp;
-
 
1350
/*XXX*/
-
 
1351
DL_FUNC R_dlsym(DllInfo *info, char const *name, R_RegisteredNativeSymbol *symbol);
-
 
1352
	tmp = VECTOR_ELT(dll->obj, 4);
-
 
1353
	info = (DllInfo *) R_ExternalPtrAddr(tmp);
-
 
1354
	if(!info) 
-
 
1355
	    error("NULL value for DLLInfoReference when looking for DLL");
-
 
1356
	fun = R_dlsym(info, name, symbol);
-
 
1357
    }
-
 
1358
 
-
 
1359
    if(numProtects)
-
 
1360
	UNPROTECT(numProtects);
-
 
1361
 
-
 
1362
    return(fun);
-
 
1363
}
-
 
1364
 
-
 
1365
 
-
 
1366
 
1199
/* .C() {op=0}  or  .Fortran() {op=1} */
1367
/* .C() {op=0}  or  .Fortran() {op=1} */
1200
SEXP do_dotCode(SEXP call, SEXP op, SEXP args, SEXP env)
1368
SEXP do_dotCode(SEXP call, SEXP op, SEXP args, SEXP env)
1201
{
1369
{
1202
    void **cargs;
1370
    void **cargs;
1203
    int dup, havenames, naok, nargs, which;
1371
    int dup, havenames, naok, nargs, which;
1204
    DL_FUNC fun;
1372
    DL_FUNC fun = NULL;
1205
    SEXP ans, pargs, s;
1373
    SEXP ans, pargs, s;
1206
    R_toCConverter  *argConverters[65]; /* the post-call converters back to R objects. */
1374
    R_toCConverter  *argConverters[65]; /* the post-call converters back to R objects. */
1207
    R_RegisteredNativeSymbol symbol = {R_C_SYM, {NULL}, NULL};
1375
    R_RegisteredNativeSymbol symbol = {R_C_SYM, {NULL}, NULL};
1208
    R_NativePrimitiveArgType *checkTypes = NULL;
1376
    R_NativePrimitiveArgType *checkTypes = NULL;
1209
    R_NativeArgStyle *argStyles = NULL;
1377
    R_NativeArgStyle *argStyles = NULL;
-
 
1378
    char *vmax, symName[128];
1210
 
1379
 
1211
    char buf[128], *p, *q, *vmax;
-
 
1212
    if (NaokSymbol == NULL || DupSymbol == NULL || PkgSymbol == NULL) {
1380
    if (NaokSymbol == NULL || DupSymbol == NULL || PkgSymbol == NULL) {
1213
	NaokSymbol = install("NAOK");
1381
	NaokSymbol = install("NAOK");
1214
	DupSymbol = install("DUP");
1382
	DupSymbol = install("DUP");
1215
	PkgSymbol = install("PACKAGE");
1383
	PkgSymbol = install("PACKAGE");
1216
    }
1384
    }
1217
    vmax = vmaxget();
1385
    vmax = vmaxget();
1218
    which = PRIMVAL(op);
1386
    which = PRIMVAL(op);
1219
    if(which)
1387
    if(which)
1220
	symbol.type = R_FORTRAN_SYM;
1388
	symbol.type = R_FORTRAN_SYM;
1221
    op = CAR(args);
-
 
1222
    if (!isValidString(op))
-
 
1223
	errorcall(call, "function name must be a string (of length 1)");
-
 
1224
 
1389
 
1225
    /* The following code modifies the argument list */
-
 
1226
    /* We know this is ok because do_dotCode is entered */
-
 
1227
    /* with its arguments evaluated. */
-
 
1228
 
-
 
1229
    strcpy(DLLname, "");
-
 
1230
    args = naokfind(CDR(args), &nargs, &naok, &dup);
1390
    args = resolveNativeRoutine(args, &fun, &symbol, symName, &nargs, &naok, &dup, call);
1231
    if(naok == NA_LOGICAL)
-
 
1232
	errorcall(call, "invalid naok value");
-
 
1233
    if(nargs > MAX_ARGS)
-
 
1234
	errorcall(call, "too many arguments in foreign function call");
-
 
1235
 
-
 
1236
    /* Make up the load symbol and look it up. */
-
 
1237
 
-
 
1238
    p = CHAR(STRING_ELT(op, 0));
-
 
1239
    q = buf;
-
 
1240
    while ((*q = *p) != '\0') {
-
 
1241
	p++;
-
 
1242
	q++;
-
 
1243
    }
-
 
1244
 
-
 
1245
    if (!(fun = R_FindSymbol(buf, DLLname, &symbol))) {
-
 
1246
	if(strlen(DLLname))
-
 
1247
	    errorcall(call, "%s function name not in DLL for package %s",
-
 
1248
		      which ? "Fortran" : "C", DLLname);
-
 
1249
	else
-
 
1250
	    errorcall(call, "%s function name not in load table",
-
 
1251
		      which ? "Fortran" : "C");
-
 
1252
    }
-
 
1253
 
1391
 
1254
    if(symbol.symbol.c && symbol.symbol.c->numArgs > -1) {
1392
    if(symbol.symbol.c && symbol.symbol.c->numArgs > -1) {
1255
	if(symbol.symbol.c->numArgs != nargs)
1393
	if(symbol.symbol.c->numArgs != nargs)
1256
	    error("Incorrect number of arguments (%d), expecting %d for %s",
1394
	    error("Incorrect number of arguments (%d), expecting %d for %s",
1257
		  nargs, symbol.symbol.c->numArgs, buf);
1395
		  nargs, symbol.symbol.c->numArgs, symName);
1258
 
1396
 
1259
        checkTypes = symbol.symbol.c->types;
1397
	checkTypes = symbol.symbol.c->types;
1260
        argStyles = symbol.symbol.c->styles;
1398
	argStyles = symbol.symbol.c->styles;
1261
    }
1399
    }
1262
 
1400
 
-
 
1401
 
1263
    /* Convert the arguments for use in foreign */
1402
    /* Convert the arguments for use in foreign */
1264
    /* function calls.  Note that we copy twice */
1403
    /* function calls.  Note that we copy twice */
1265
    /* once here, on the way into the call, and */
1404
    /* once here, on the way into the call, and */
1266
    /* once below on the way out. */
1405
    /* once below on the way out. */
1267
    cargs = (void**)R_alloc(nargs, sizeof(void*));
1406
    cargs = (void**)R_alloc(nargs, sizeof(void*));
1268
    nargs = 0;
1407
    nargs = 0;
1269
    for(pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
1408
    for(pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
1270
#ifdef THROW_REGISTRATION_TYPE_ERROR
1409
#ifdef THROW_REGISTRATION_TYPE_ERROR
1271
        if(checkTypes && !comparePrimitiveTypes(checkTypes[nargs], CAR(pargs), dup)) {
1410
        if(checkTypes && !comparePrimitiveTypes(checkTypes[nargs], CAR(pargs), dup)) {
1272
            /* We can loop over all the arguments and report all the erroneous ones,
1411
            /* We can loop over all the arguments and report all the erroneous ones,
1273
               but then we would also want to avoid the conversions.
1412
               but then we would also want to avoid the conversions.
1274
               Also, in the future, we may just attempt to coerce the value
1413
               Also, in the future, we may just attempt to coerce the value
1275
               to the appropriate type. This is why we pass the checkTypes[nargs]
1414
               to the appropriate type. This is why we pass the checkTypes[nargs]
1276
               value to RObjToCPtr(). We just have to sort out the ability to
1415
               value to RObjToCPtr(). We just have to sort out the ability to
1277
               return the correct value which is complicated by dup, etc. */
1416
               return the correct value which is complicated by dup, etc. */
1278
  	   error("Wrong type for argument %d in call to %s", nargs+1, buf);
1417
	    error("Wrong type for argument %d in call to %s", nargs+1, symName);
1279
	}
1418
	}
1280
#endif
1419
#endif
1281
	cargs[nargs] = RObjToCPtr(CAR(pargs), naok, dup, nargs + 1,
1420
	cargs[nargs] = RObjToCPtr(CAR(pargs), naok, dup, nargs + 1,
1282
				  which, buf, argConverters + nargs,
1421
				  which, symName, argConverters + nargs,
1283
				  checkTypes ? checkTypes[nargs] : 0);
1422
				  checkTypes ? checkTypes[nargs] : 0);
1284
	nargs++;
1423
	nargs++;
1285
    }
1424
    }
1286
 
1425
 
1287
 
1426
 
1288
    switch (nargs) {
1427
    switch (nargs) {
1289
    case 0:
1428
    case 0:
1290
	/* Silicon graphics C chokes here */
1429
	/* Silicon graphics C chokes here */
1291
	/* if there is no argument to fun. */
1430
	/* if there is no argument to fun. */
1292
	fun(0);
1431
	fun(0);
1293
	break;
1432
	break;
1294
    case 1:
1433
    case 1:
1295
	fun(cargs[0]);
1434
	fun(cargs[0]);
1296
	break;
1435
	break;
1297
    case 2:
1436
    case 2:
1298
	fun(cargs[0], cargs[1]);
1437
	fun(cargs[0], cargs[1]);
1299
	break;
1438
	break;
1300
    case 3:
1439
    case 3:
1301
	fun(cargs[0], cargs[1], cargs[2]);
1440
	fun(cargs[0], cargs[1], cargs[2]);
1302
	break;
1441
	break;
1303
    case 4:
1442
    case 4:
1304
	fun(cargs[0], cargs[1], cargs[2], cargs[3]);
1443
	fun(cargs[0], cargs[1], cargs[2], cargs[3]);
1305
	break;
1444
	break;
1306
    case 5:
1445
    case 5:
1307
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4]);
1446
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4]);
1308
	break;
1447
	break;
1309
    case 6:
1448
    case 6:
1310
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1449
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1311
	    cargs[5]);
1450
	    cargs[5]);
1312
	break;
1451
	break;
1313
    case 7:
1452
    case 7:
1314
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1453
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1315
	    cargs[5],  cargs[6]);
1454
	    cargs[5],  cargs[6]);
1316
	break;
1455
	break;
1317
    case 8:
1456
    case 8:
1318
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1457
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1319
	    cargs[5],  cargs[6],  cargs[7]);
1458
	    cargs[5],  cargs[6],  cargs[7]);
1320
	break;
1459
	break;
1321
    case 9:
1460
    case 9:
1322
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1461
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1323
	    cargs[5],  cargs[6],  cargs[7],  cargs[8]);
1462
	    cargs[5],  cargs[6],  cargs[7],  cargs[8]);
1324
	break;
1463
	break;
1325
    case 10:
1464
    case 10:
1326
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1465
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1327
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9]);
1466
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9]);
1328
	break;
1467
	break;
1329
    case 11:
1468
    case 11:
1330
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1469
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1331
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1470
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1332
	    cargs[10]);
1471
	    cargs[10]);
1333
	break;
1472
	break;
1334
    case 12:
1473
    case 12:
1335
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1474
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1336
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1475
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1337
	    cargs[10], cargs[11]);
1476
	    cargs[10], cargs[11]);
1338
	break;
1477
	break;
1339
    case 13:
1478
    case 13:
1340
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1479
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1341
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1480
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1342
	    cargs[10], cargs[11], cargs[12]);
1481
	    cargs[10], cargs[11], cargs[12]);
1343
	break;
1482
	break;
1344
    case 14:
1483
    case 14:
1345
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1484
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1346
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1485
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1347
	    cargs[10], cargs[11], cargs[12], cargs[13]);
1486
	    cargs[10], cargs[11], cargs[12], cargs[13]);
1348
	break;
1487
	break;
1349
    case 15:
1488
    case 15:
1350
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1489
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1351
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1490
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1352
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14]);
1491
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14]);
1353
	break;
1492
	break;
1354
    case 16:
1493
    case 16:
1355
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1494
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1356
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1495
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1357
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1496
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1358
	    cargs[15]);
1497
	    cargs[15]);
1359
	break;
1498
	break;
1360
    case 17:
1499
    case 17:
1361
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1500
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1362
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1501
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1363
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1502
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1364
	    cargs[15], cargs[16]);
1503
	    cargs[15], cargs[16]);
1365
	break;
1504
	break;
1366
    case 18:
1505
    case 18:
1367
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1506
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1368
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1507
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1369
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1508
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1370
	    cargs[15], cargs[16], cargs[17]);
1509
	    cargs[15], cargs[16], cargs[17]);
1371
	break;
1510
	break;
1372
    case 19:
1511
    case 19:
1373
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1512
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1374
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1513
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1375
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1514
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1376
	    cargs[15], cargs[16], cargs[17], cargs[18]);
1515
	    cargs[15], cargs[16], cargs[17], cargs[18]);
1377
	break;
1516
	break;
1378
    case 20:
1517
    case 20:
1379
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1518
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1380
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1519
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1381
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1520
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1382
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19]);
1521
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19]);
1383
	break;
1522
	break;
1384
    case 21:
1523
    case 21:
1385
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1524
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1386
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1525
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1387
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1526
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1388
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1527
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1389
	    cargs[20]);
1528
	    cargs[20]);
1390
	break;
1529
	break;
1391
    case 22:
1530
    case 22:
1392
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1531
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1393
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1532
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1394
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1533
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1395
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1534
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1396
	    cargs[20], cargs[21]);
1535
	    cargs[20], cargs[21]);
1397
	break;
1536
	break;
1398
    case 23:
1537
    case 23:
1399
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1538
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1400
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1539
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1401
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1540
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1402
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1541
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1403
	    cargs[20], cargs[21], cargs[22]);
1542
	    cargs[20], cargs[21], cargs[22]);
1404
	break;
1543
	break;
1405
    case 24:
1544
    case 24:
1406
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1545
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1407
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1546
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1408
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1547
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1409
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1548
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1410
	    cargs[20], cargs[21], cargs[22], cargs[23]);
1549
	    cargs[20], cargs[21], cargs[22], cargs[23]);
1411
	break;
1550
	break;
1412
    case 25:
1551
    case 25:
1413
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1552
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1414
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1553
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1415
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1554
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1416
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1555
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1417
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24]);
1556
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24]);
1418
	break;
1557
	break;
1419
    case 26:
1558
    case 26:
1420
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1559
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1421
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1560
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1422
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1561
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1423
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1562
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1424
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1563
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1425
	    cargs[25]);
1564
	    cargs[25]);
1426
	break;
1565
	break;
1427
    case 27:
1566
    case 27:
1428
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1567
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1429
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1568
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1430
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1569
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1431
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1570
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1432
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1571
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1433
	    cargs[25], cargs[26]);
1572
	    cargs[25], cargs[26]);
1434
	break;
1573
	break;
1435
    case 28:
1574
    case 28:
1436
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1575
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1437
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1576
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1438
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1577
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1439
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1578
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1440
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1579
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1441
	    cargs[25], cargs[26], cargs[27]);
1580
	    cargs[25], cargs[26], cargs[27]);
1442
	break;
1581
	break;
1443
    case 29:
1582
    case 29:
1444
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1583
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1445
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1584
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1446
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1585
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1447
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1586
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1448
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1587
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1449
	    cargs[25], cargs[26], cargs[27], cargs[28]);
1588
	    cargs[25], cargs[26], cargs[27], cargs[28]);
1450
	break;
1589
	break;
1451
    case 30:
1590
    case 30:
1452
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1591
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1453
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1592
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1454
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1593
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1455
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1594
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1456
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1595
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1457
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29]);
1596
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29]);
1458
	break;
1597
	break;
1459
    case 31:
1598
    case 31:
1460
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1599
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1461
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1600
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1462
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1601
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1463
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1602
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1464
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1603
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1465
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1604
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1466
	    cargs[30]);
1605
	    cargs[30]);
1467
	break;
1606
	break;
1468
    case 32:
1607
    case 32:
1469
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1608
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1470
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1609
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1471
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1610
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1472
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1611
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1473
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1612
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1474
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1613
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1475
	    cargs[30], cargs[31]);
1614
	    cargs[30], cargs[31]);
1476
	break;
1615
	break;
1477
    case 33:
1616
    case 33:
1478
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1617
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1479
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1618
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1480
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1619
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1481
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1620
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1482
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1621
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1483
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1622
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1484
	    cargs[30], cargs[31], cargs[32]);
1623
	    cargs[30], cargs[31], cargs[32]);
1485
	break;
1624
	break;
1486
    case 34:
1625
    case 34:
1487
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1626
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1488
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1627
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1489
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1628
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1490
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1629
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1491
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1630
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1492
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1631
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1493
	    cargs[30], cargs[31], cargs[32], cargs[33]);
1632
	    cargs[30], cargs[31], cargs[32], cargs[33]);
1494
	break;
1633
	break;
1495
    case 35:
1634
    case 35:
1496
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1635
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1497
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1636
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1498
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1637
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1499
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1638
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1500
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1639
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1501
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1640
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1502
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34]);
1641
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34]);
1503
	break;
1642
	break;
1504
    case 36:
1643
    case 36:
1505
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1644
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1506
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1645
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1507
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1646
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1508
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1647
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1509
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1648
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1510
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1649
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1511
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1650
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1512
	    cargs[35]);
1651
	    cargs[35]);
1513
	break;
1652
	break;
1514
    case 37:
1653
    case 37:
1515
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1654
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1516
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1655
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1517
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1656
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1518
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1657
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1519
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1658
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1520
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1659
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1521
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1660
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1522
	    cargs[35], cargs[36]);
1661
	    cargs[35], cargs[36]);
1523
	break;
1662
	break;
1524
    case 38:
1663
    case 38:
1525
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1664
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1526
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1665
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1527
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1666
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1528
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1667
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1529
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1668
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1530
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1669
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1531
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1670
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1532
	    cargs[35], cargs[36], cargs[37]);
1671
	    cargs[35], cargs[36], cargs[37]);
1533
	break;
1672
	break;
1534
    case 39:
1673
    case 39:
1535
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1674
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1536
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1675
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1537
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1676
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1538
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1677
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1539
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1678
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1540
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1679
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1541
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1680
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1542
	    cargs[35], cargs[36], cargs[37], cargs[38]);
1681
	    cargs[35], cargs[36], cargs[37], cargs[38]);
1543
	break;
1682
	break;
1544
    case 40:
1683
    case 40:
1545
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1684
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1546
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1685
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1547
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1686
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1548
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1687
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1549
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1688
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1550
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1689
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1551
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1690
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1552
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39]);
1691
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39]);
1553
	break;
1692
	break;
1554
    case 41:
1693
    case 41:
1555
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1694
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1556
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1695
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1557
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1696
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1558
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1697
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1559
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1698
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1560
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1699
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1561
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1700
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1562
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1701
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1563
	    cargs[40]);
1702
	    cargs[40]);
1564
	break;
1703
	break;
1565
    case 42:
1704
    case 42:
1566
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1705
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1567
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1706
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1568
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1707
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1569
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1708
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1570
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1709
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1571
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1710
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1572
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1711
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1573
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1712
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1574
	    cargs[40], cargs[41]);
1713
	    cargs[40], cargs[41]);
1575
	break;
1714
	break;
1576
    case 43:
1715
    case 43:
1577
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1716
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1578
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1717
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1579
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1718
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1580
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1719
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1581
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1720
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1582
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1721
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1583
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1722
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1584
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1723
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1585
	    cargs[40], cargs[41], cargs[42]);
1724
	    cargs[40], cargs[41], cargs[42]);
1586
	break;
1725
	break;
1587
    case 44:
1726
    case 44:
1588
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1727
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1589
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1728
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1590
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1729
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1591
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1730
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1592
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1731
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1593
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1732
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1594
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1733
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1595
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1734
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1596
	    cargs[40], cargs[41], cargs[42], cargs[43]);
1735
	    cargs[40], cargs[41], cargs[42], cargs[43]);
1597
	break;
1736
	break;
1598
    case 45:
1737
    case 45:
1599
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1738
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1600
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1739
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1601
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1740
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1602
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1741
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1603
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1742
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1604
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1743
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1605
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1744
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1606
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1745
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1607
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44]);
1746
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44]);
1608
	break;
1747
	break;
1609
    case 46:
1748
    case 46:
1610
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1749
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1611
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1750
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1612
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1751
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1613
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1752
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1614
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1753
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1615
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1754
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1616
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1755
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1617
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1756
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1618
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1757
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1619
	    cargs[45]);
1758
	    cargs[45]);
1620
	break;
1759
	break;
1621
    case 47:
1760
    case 47:
1622
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1761
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1623
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1762
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1624
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1763
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1625
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1764
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1626
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1765
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1627
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1766
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1628
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1767
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1629
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1768
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1630
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1769
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1631
	    cargs[45], cargs[46]);
1770
	    cargs[45], cargs[46]);
1632
	break;
1771
	break;
1633
    case 48:
1772
    case 48:
1634
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1773
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1635
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1774
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1636
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1775
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1637
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1776
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1638
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1777
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1639
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1778
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1640
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1779
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1641
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1780
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1642
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1781
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1643
	    cargs[45], cargs[46], cargs[47]);
1782
	    cargs[45], cargs[46], cargs[47]);
1644
	break;
1783
	break;
1645
    case 49:
1784
    case 49:
1646
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1785
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1647
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1786
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1648
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1787
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1649
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1788
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1650
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1789
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1651
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1790
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1652
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1791
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1653
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1792
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1654
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1793
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1655
	    cargs[45], cargs[46], cargs[47], cargs[48]);
1794
	    cargs[45], cargs[46], cargs[47], cargs[48]);
1656
	break;
1795
	break;
1657
    case 50:
1796
    case 50:
1658
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1797
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1659
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1798
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1660
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1799
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1661
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1800
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1662
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1801
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1663
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1802
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1664
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1803
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1665
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1804
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1666
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1805
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1667
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49]);
1806
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49]);
1668
	break;
1807
	break;
1669
    case 51:
1808
    case 51:
1670
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1809
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1671
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1810
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1672
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1811
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1673
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1812
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1674
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1813
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1675
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1814
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1676
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1815
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1677
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1816
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1678
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1817
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1679
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1818
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1680
	    cargs[50]);
1819
	    cargs[50]);
1681
	break;
1820
	break;
1682
    case 52:
1821
    case 52:
1683
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1822
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1684
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1823
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1685
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1824
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1686
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1825
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1687
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1826
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1688
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1827
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1689
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1828
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1690
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1829
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1691
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1830
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1692
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1831
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1693
	    cargs[50], cargs[51]);
1832
	    cargs[50], cargs[51]);
1694
	break;
1833
	break;
1695
    case 53:
1834
    case 53:
1696
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1835
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1697
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1836
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1698
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1837
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1699
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1838
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1700
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1839
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1701
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1840
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1702
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1841
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1703
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1842
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1704
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1843
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1705
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1844
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1706
	    cargs[50], cargs[51], cargs[52]);
1845
	    cargs[50], cargs[51], cargs[52]);
1707
	break;
1846
	break;
1708
    case 54:
1847
    case 54:
1709
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1848
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1710
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1849
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1711
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1850
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1712
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1851
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1713
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1852
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1714
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1853
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1715
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1854
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1716
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1855
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1717
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1856
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1718
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1857
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1719
	    cargs[50], cargs[51], cargs[52], cargs[53]);
1858
	    cargs[50], cargs[51], cargs[52], cargs[53]);
1720
	break;
1859
	break;
1721
    case 55:
1860
    case 55:
1722
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1861
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1723
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1862
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1724
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1863
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1725
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1864
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1726
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1865
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1727
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1866
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1728
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1867
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1729
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1868
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1730
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1869
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1731
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1870
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1732
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54]);
1871
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54]);
1733
	break;
1872
	break;
1734
    case 56:
1873
    case 56:
1735
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1874
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1736
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1875
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1737
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1876
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1738
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1877
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1739
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1878
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1740
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1879
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1741
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1880
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1742
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1881
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1743
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1882
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1744
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1883
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1745
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1884
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1746
	    cargs[55]);
1885
	    cargs[55]);
1747
	break;
1886
	break;
1748
    case 57:
1887
    case 57:
1749
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1888
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1750
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1889
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1751
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1890
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1752
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1891
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1753
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1892
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1754
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1893
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1755
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1894
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1756
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1895
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1757
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1896
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1758
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1897
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1759
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1898
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1760
	    cargs[55], cargs[56]);
1899
	    cargs[55], cargs[56]);
1761
	break;
1900
	break;
1762
    case 58:
1901
    case 58:
1763
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1902
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1764
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1903
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1765
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1904
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1766
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1905
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1767
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1906
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1768
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1907
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1769
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1908
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1770
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1909
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1771
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1910
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1772
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1911
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1773
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1912
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1774
	    cargs[55], cargs[56], cargs[57]);
1913
	    cargs[55], cargs[56], cargs[57]);
1775
	break;
1914
	break;
1776
    case 59:
1915
    case 59:
1777
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1916
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1778
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1917
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1779
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1918
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1780
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1919
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1781
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1920
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1782
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1921
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1783
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1922
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1784
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1923
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1785
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1924
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1786
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1925
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1787
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1926
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1788
	    cargs[55], cargs[56], cargs[57], cargs[58]);
1927
	    cargs[55], cargs[56], cargs[57], cargs[58]);
1789
	break;
1928
	break;
1790
    case 60:
1929
    case 60:
1791
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1930
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1792
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1931
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1793
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1932
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1794
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1933
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1795
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1934
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1796
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1935
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1797
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1936
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1798
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1937
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1799
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1938
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1800
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1939
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1801
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1940
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1802
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59]);
1941
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59]);
1803
	break;
1942
	break;
1804
    case 61:
1943
    case 61:
1805
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1944
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1806
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1945
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1807
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1946
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1808
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1947
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1809
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1948
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1810
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1949
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1811
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1950
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1812
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1951
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1813
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1952
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1814
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1953
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1815
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1954
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1816
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1955
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1817
	    cargs[60]);
1956
	    cargs[60]);
1818
	break;
1957
	break;
1819
    case 62:
1958
    case 62:
1820
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1959
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1821
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1960
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1822
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1961
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1823
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1962
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1824
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1963
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1825
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1964
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1826
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1965
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1827
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1966
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1828
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1967
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1829
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1968
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1830
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1969
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1831
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1970
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1832
	    cargs[60], cargs[61]);
1971
	    cargs[60], cargs[61]);
1833
	break;
1972
	break;
1834
    case 63:
1973
    case 63:
1835
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1974
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1836
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1975
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1837
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1976
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1838
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1977
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1839
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1978
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1840
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1979
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1841
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1980
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1842
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1981
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1843
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1982
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1844
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1983
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1845
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1984
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1846
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1985
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1847
	    cargs[60], cargs[61], cargs[62]);
1986
	    cargs[60], cargs[61], cargs[62]);
1848
	break;
1987
	break;
1849
    case 64:
1988
    case 64:
1850
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1989
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1851
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1990
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1852
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1991
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1853
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1992
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1854
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1993
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1855
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1994
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1856
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1995
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1857
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1996
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1858
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1997
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1859
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1998
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1860
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1999
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1861
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
2000
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1862
	    cargs[60], cargs[61], cargs[62], cargs[63]);
2001
	    cargs[60], cargs[61], cargs[62], cargs[63]);
1863
	break;
2002
	break;
1864
    case 65:
2003
    case 65:
1865
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
2004
	fun(cargs[0],  cargs[1],  cargs[2],  cargs[3],  cargs[4],
1866
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
2005
	    cargs[5],  cargs[6],  cargs[7],  cargs[8],  cargs[9],
1867
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
2006
	    cargs[10], cargs[11], cargs[12], cargs[13], cargs[14],
1868
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
2007
	    cargs[15], cargs[16], cargs[17], cargs[18], cargs[19],
1869
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
2008
	    cargs[20], cargs[21], cargs[22], cargs[23], cargs[24],
1870
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
2009
	    cargs[25], cargs[26], cargs[27], cargs[28], cargs[29],
1871
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
2010
	    cargs[30], cargs[31], cargs[32], cargs[33], cargs[34],
1872
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
2011
	    cargs[35], cargs[36], cargs[37], cargs[38], cargs[39],
1873
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
2012
	    cargs[40], cargs[41], cargs[42], cargs[43], cargs[44],
1874
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
2013
	    cargs[45], cargs[46], cargs[47], cargs[48], cargs[49],
1875
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
2014
	    cargs[50], cargs[51], cargs[52], cargs[53], cargs[54],
1876
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
2015
	    cargs[55], cargs[56], cargs[57], cargs[58], cargs[59],
1877
	    cargs[60], cargs[61], cargs[62], cargs[63], cargs[64]);
2016
	    cargs[60], cargs[61], cargs[62], cargs[63], cargs[64]);
1878
	break;
2017
	break;
1879
    default:
2018
    default:
1880
	errorcall(call, "too many arguments, sorry");
2019
	errorcall(call, "too many arguments, sorry");
1881
    }
2020
    }
1882
    PROTECT(ans = allocVector(VECSXP, nargs));
2021
    PROTECT(ans = allocVector(VECSXP, nargs));
1883
    havenames = 0;
2022
    havenames = 0;
1884
    if (dup) {
2023
    if (dup) {
1885
	R_FromCConvertInfo info;
2024
	R_FromCConvertInfo info;
1886
	info.cargs = cargs;
2025
	info.cargs = cargs;
1887
	info.allArgs = args;
2026
	info.allArgs = args;
1888
	info.nargs = nargs;
2027
	info.nargs = nargs;
1889
	info.functionName = buf;
2028
	info.functionName = symName;
1890
	nargs = 0;
2029
	nargs = 0;
1891
	for (pargs = args ; pargs != R_NilValue ; pargs = CDR(pargs)) {
2030
	for (pargs = args ; pargs != R_NilValue ; pargs = CDR(pargs)) {
1892
	    if(argStyles && argStyles[nargs] == R_ARG_IN) {
2031
	    if(argStyles && argStyles[nargs] == R_ARG_IN) {
1893
	        PROTECT(s = R_NilValue);
2032
	        PROTECT(s = R_NilValue);
1894
	    } else if(argConverters[nargs]) {
2033
	    } else if(argConverters[nargs]) {
1895
                if(argConverters[nargs]->reverse) {
2034
                if(argConverters[nargs]->reverse) {
1896
		    info.argIndex = nargs;
2035
		    info.argIndex = nargs;
1897
		    s = argConverters[nargs]->reverse(cargs[nargs], CAR(pargs),
2036
		    s = argConverters[nargs]->reverse(cargs[nargs], CAR(pargs),
1898
                                                       &info, argConverters[nargs]);
2037
                                                       &info, argConverters[nargs]);
1899
		} else
2038
		} else
1900
		    s = R_NilValue;
2039
		    s = R_NilValue;
1901
		PROTECT(s);
2040
		PROTECT(s);
1902
	    } else {
2041
	    } else {
1903
		PROTECT(s = CPtrToRObj(cargs[nargs], CAR(pargs), which,
2042
		PROTECT(s = CPtrToRObj(cargs[nargs], CAR(pargs), which,
1904
				       checkTypes ? checkTypes[nargs] : TYPEOF(CAR(pargs))));
2043
				       checkTypes ? checkTypes[nargs] : TYPEOF(CAR(pargs))));
1905
		SET_ATTRIB(s, duplicate(ATTRIB(CAR(pargs))));
2044
		SET_ATTRIB(s, duplicate(ATTRIB(CAR(pargs))));
1906
		SET_OBJECT(s, OBJECT(CAR(pargs)));
2045
		SET_OBJECT(s, OBJECT(CAR(pargs)));
1907
	    }
2046
	    }
1908
	    if (TAG(pargs) != R_NilValue)
2047
	    if (TAG(pargs) != R_NilValue)
1909
		havenames = 1;
2048
		havenames = 1;
1910
	    SET_VECTOR_ELT(ans, nargs, s);
2049
	    SET_VECTOR_ELT(ans, nargs, s);
1911
	    nargs++;
2050
	    nargs++;
1912
	    UNPROTECT(1);
2051
	    UNPROTECT(1);
1913
	}
2052
	}
1914
    }
2053
    }
1915
    else {
2054
    else {
1916
	nargs = 0;
2055
	nargs = 0;
1917
	for (pargs = args ; pargs != R_NilValue ; pargs = CDR(pargs)) {
2056
	for (pargs = args ; pargs != R_NilValue ; pargs = CDR(pargs)) {
1918
	    if (TAG(pargs) != R_NilValue)
2057
	    if (TAG(pargs) != R_NilValue)
1919
		havenames = 1;
2058
		havenames = 1;
1920
	    SET_VECTOR_ELT(ans, nargs, CAR(pargs));
2059
	    SET_VECTOR_ELT(ans, nargs, CAR(pargs));
1921
	    nargs++;
2060
	    nargs++;
1922
	}
2061
	}
1923
    }
2062
    }
1924
    if (havenames) {
2063
    if (havenames) {
1925
	SEXP names;
2064
	SEXP names;
1926
	PROTECT(names = allocVector(STRSXP, nargs));
2065
	PROTECT(names = allocVector(STRSXP, nargs));
1927
	nargs = 0;
2066
	nargs = 0;
1928
	for (pargs = args ; pargs != R_NilValue ; pargs = CDR(pargs)) {
2067
	for (pargs = args ; pargs != R_NilValue ; pargs = CDR(pargs)) {
1929
	    if (TAG(pargs) == R_NilValue)
2068
	    if (TAG(pargs) == R_NilValue)
1930
		SET_STRING_ELT(names, nargs++, R_BlankString);
2069
		SET_STRING_ELT(names, nargs++, R_BlankString);
1931
	    else
2070
	    else
1932
		SET_STRING_ELT(names, nargs++, PRINTNAME(TAG(pargs)));
2071
		SET_STRING_ELT(names, nargs++, PRINTNAME(TAG(pargs)));
1933
        }
2072
        }
1934
	setAttrib(ans, R_NamesSymbol, names);
2073
	setAttrib(ans, R_NamesSymbol, names);
1935
	UNPROTECT(1);
2074
	UNPROTECT(1);
1936
    }
2075
    }
1937
    UNPROTECT(1);
2076
    UNPROTECT(1);
1938
    vmaxset(vmax);
2077
    vmaxset(vmax);
1939
    return (ans);
2078
    return (ans);
1940
}
2079
}
1941
 
2080
 
1942
/* FIXME : Must work out what happens here when we replace LISTSXP by
2081
/* FIXME : Must work out what happens here when we replace LISTSXP by
1943
   VECSXP. */
2082
   VECSXP. */
1944
 
2083
 
1945
static const struct {
2084
static const struct {
1946
    const char *name;
2085
    const char *name;
1947
    const SEXPTYPE type;
2086
    const SEXPTYPE type;
1948
}
2087
}
1949
typeinfo[] = {
2088
typeinfo[] = {
1950
    {"logical",	  LGLSXP },
2089
    {"logical",	  LGLSXP },
1951
    {"integer",	  INTSXP },
2090
    {"integer",	  INTSXP },
1952
    {"double",	  REALSXP},
2091
    {"double",	  REALSXP},
1953
    {"complex",	  CPLXSXP},
2092
    {"complex",	  CPLXSXP},
1954
    {"character", STRSXP },
2093
    {"character", STRSXP },
1955
    {"list",	  VECSXP },
2094
    {"list",	  VECSXP },
1956
    {NULL,	  0      }
2095
    {NULL,	  0      }
1957
};
2096
};
1958
 
2097
 
1959
static int string2type(char *s)
2098
static int string2type(char *s)
1960
{
2099
{
1961
    int i;
2100
    int i;
1962
    for (i = 0 ; typeinfo[i].name ; i++) {
2101
    for (i = 0 ; typeinfo[i].name ; i++) {
1963
	if(!strcmp(typeinfo[i].name, s)) {
2102
	if(!strcmp(typeinfo[i].name, s)) {
1964
	    return typeinfo[i].type;
2103
	    return typeinfo[i].type;
1965
	}
2104
	}
1966
    }
2105
    }
1967
    error("type \"%s\" not supported in interlanguage calls", s);
2106
    error("type \"%s\" not supported in interlanguage calls", s);
1968
    return 1; /* for -Wall */
2107
    return 1; /* for -Wall */
1969
}
2108
}
1970
 
2109
 
1971
void call_R(char *func, long nargs, void **arguments, char **modes,
2110
void call_R(char *func, long nargs, void **arguments, char **modes,
1972
	    long *lengths, char **names, long nres, char **results)
2111
	    long *lengths, char **names, long nres, char **results)
1973
{
2112
{
1974
    SEXP call, pcall, s;
2113
    SEXP call, pcall, s;
1975
    SEXPTYPE type;
2114
    SEXPTYPE type;
1976
    int i, j, n;
2115
    int i, j, n;
1977
 
2116
 
1978
    if (!isFunction((SEXP)func))
2117
    if (!isFunction((SEXP)func))
1979
	error("invalid function in call_R");
2118
	error("invalid function in call_R");
1980
    if (nargs < 0)
2119
    if (nargs < 0)
1981
	error("invalid argument count in call_R");
2120
	error("invalid argument count in call_R");
1982
    if (nres < 0)
2121
    if (nres < 0)
1983
	error("invalid return value count in call_R");
2122
	error("invalid return value count in call_R");
1984
    PROTECT(pcall = call = allocList(nargs + 1));
2123
    PROTECT(pcall = call = allocList(nargs + 1));
1985
    SET_TYPEOF(call, LANGSXP);
2124
    SET_TYPEOF(call, LANGSXP);
1986
    SETCAR(pcall, (SEXP)func);
2125
    SETCAR(pcall, (SEXP)func);
1987
    s = R_NilValue;		/* -Wall */
2126
    s = R_NilValue;		/* -Wall */
1988
    for (i = 0 ; i < nargs ; i++) {
2127
    for (i = 0 ; i < nargs ; i++) {
1989
	pcall = CDR(pcall);
2128
	pcall = CDR(pcall);
1990
	type = string2type(modes[i]);
2129
	type = string2type(modes[i]);
1991
	switch(type) {
2130
	switch(type) {
1992
	case LGLSXP:
2131
	case LGLSXP:
1993
	case INTSXP:
2132
	case INTSXP:
1994
	    n = lengths[i];
2133
	    n = lengths[i];
1995
	    SETCAR(pcall, allocVector(type, n));
2134
	    SETCAR(pcall, allocVector(type, n));
1996
	    memcpy(INTEGER(CAR(pcall)), arguments[i], n * sizeof(int));
2135
	    memcpy(INTEGER(CAR(pcall)), arguments[i], n * sizeof(int));
1997
	    break;
2136
	    break;
1998
	case REALSXP:
2137
	case REALSXP:
1999
	    n = lengths[i];
2138
	    n = lengths[i];
2000
	    SETCAR(pcall, allocVector(REALSXP, n));
2139
	    SETCAR(pcall, allocVector(REALSXP, n));
2001
	    memcpy(REAL(CAR(pcall)), arguments[i], n * sizeof(double));
2140
	    memcpy(REAL(CAR(pcall)), arguments[i], n * sizeof(double));
2002
	    break;
2141
	    break;
2003
	case CPLXSXP:
2142
	case CPLXSXP:
2004
	    n = lengths[i];
2143
	    n = lengths[i];
2005
	    SETCAR(pcall, allocVector(CPLXSXP, n));
2144
	    SETCAR(pcall, allocVector(CPLXSXP, n));
2006
	    memcpy(REAL(CAR(pcall)), arguments[i], n * sizeof(Rcomplex));
2145
	    memcpy(REAL(CAR(pcall)), arguments[i], n * sizeof(Rcomplex));
2007
	    break;
2146
	    break;
2008
	case STRSXP:
2147
	case STRSXP:
2009
	    n = lengths[i];
2148
	    n = lengths[i];
2010
	    SETCAR(pcall, allocVector(STRSXP, n));
2149
	    SETCAR(pcall, allocVector(STRSXP, n));
2011
	    for (j = 0 ; j < n ; j++) {
2150
	    for (j = 0 ; j < n ; j++) {
2012
		char *str = (char*)(arguments[i]);
2151
		char *str = (char*)(arguments[i]);
2013
		s = allocString(strlen(str));
2152
		s = allocString(strlen(str));
2014
		SET_STRING_ELT(CAR(pcall), i, s);
2153
		SET_STRING_ELT(CAR(pcall), i, s);
2015
		strcpy(CHAR(s), str);
2154
		strcpy(CHAR(s), str);
2016
 	    }
2155
 	    }
2017
	    break;
2156
	    break;
2018
	    /* FIXME : This copy is unnecessary! */
2157
	    /* FIXME : This copy is unnecessary! */
2019
	    /* FIXME : This is obviously incorrect so disable
2158
	    /* FIXME : This is obviously incorrect so disable
2020
	case VECSXP:
2159
	case VECSXP:
2021
	    n = lengths[i];
2160
	    n = lengths[i];
2022
	    SETCAR(pcall, allocVector(VECSXP, n));
2161
	    SETCAR(pcall, allocVector(VECSXP, n));
2023
	    for (j = 0 ; j < n ; j++) {
2162
	    for (j = 0 ; j < n ; j++) {
2024
		SET_VECTOR_ELT(s, i, (SEXP)(arguments[i]));
2163
		SET_VECTOR_ELT(s, i, (SEXP)(arguments[i]));
2025
	    }
2164
	    }
2026
	    break; */
2165
	    break; */
2027
	default:
2166
	default:
2028
	    error("Mode `%s' is not supported in call_R", modes[i]);
2167
	    error("Mode `%s' is not supported in call_R", modes[i]);
2029
	}
2168
	}
2030
	if(names && names[i])
2169
	if(names && names[i])
2031
	    SET_TAG(pcall, install(names[i]));
2170
	    SET_TAG(pcall, install(names[i]));
2032
	SET_NAMED(CAR(pcall), 2);
2171
	SET_NAMED(CAR(pcall), 2);
2033
    }
2172
    }
2034
    PROTECT(s = eval(call, R_GlobalEnv));
2173
    PROTECT(s = eval(call, R_GlobalEnv));
2035
    switch(TYPEOF(s)) {
2174
    switch(TYPEOF(s)) {
2036
    case LGLSXP:
2175
    case LGLSXP:
2037
    case INTSXP:
2176
    case INTSXP:
2038
    case REALSXP:
2177
    case REALSXP:
2039
    case CPLXSXP:
2178
    case CPLXSXP:
2040
    case STRSXP:
2179
    case STRSXP:
2041
	if(nres > 0)
2180
	if(nres > 0)
2042
	    results[0] = RObjToCPtr(s, 1, 1, 0, 0, (const char *)NULL, NULL, 0);
2181
	    results[0] = RObjToCPtr(s, 1, 1, 0, 0, (const char *)NULL, NULL, 0);
2043
	break;
2182
	break;
2044
    case VECSXP:
2183
    case VECSXP:
2045
	n = length(s);
2184
	n = length(s);
2046
	if (nres < n) n = nres;
2185
	if (nres < n) n = nres;
2047
	for (i = 0 ; i < n ; i++) {
2186
	for (i = 0 ; i < n ; i++) {
2048
	    results[i] = RObjToCPtr(VECTOR_ELT(s, i), 1, 1, 0, 0, (const char *)NULL, NULL, 0);
2187
	    results[i] = RObjToCPtr(VECTOR_ELT(s, i), 1, 1, 0, 0, (const char *)NULL, NULL, 0);
2049
	}
2188
	}
2050
	break;
2189
	break;
2051
    case LISTSXP:
2190
    case LISTSXP:
2052
	n = length(s);
2191
	n = length(s);
2053
	if(nres < n) n = nres;
2192
	if(nres < n) n = nres;
2054
	for(i=0 ; i<n ; i++) {
2193
	for(i=0 ; i<n ; i++) {
2055
	    results[i] = RObjToCPtr(s, 1, 1, 0, 0, (const char *)NULL, NULL, 0);
2194
	    results[i] = RObjToCPtr(s, 1, 1, 0, 0, (const char *)NULL, NULL, 0);
2056
	    s = CDR(s);
2195
	    s = CDR(s);
2057
	}
2196
	}
2058
	break;
2197
	break;
2059
    }
2198
    }
2060
    UNPROTECT(2);
2199
    UNPROTECT(2);
2061
    return;
2200
    return;
2062
}
2201
}
2063
 
2202
 
2064
void call_S(char *func, long nargs, void **arguments, char **modes,
2203
void call_S(char *func, long nargs, void **arguments, char **modes,
2065
	    long *lengths, char **names, long nres, char **results)
2204
	    long *lengths, char **names, long nres, char **results)
2066
{
2205
{
2067
    call_R(func, nargs, arguments, modes, lengths, names, nres, results);
2206
    call_R(func, nargs, arguments, modes, lengths, names, nres, results);
2068
}
2207
}