Fix so that it works for 2.6 and 2.5
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10059 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
c5fae8d592
commit
3b9574953c
3 changed files with 20 additions and 5 deletions
|
|
@ -156,11 +156,13 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
|
|||
{
|
||||
SEXP t, c;
|
||||
if (!carray) return R_NilValue;
|
||||
RVERSION26(return Rf_mkCharEnc(carray, size));
|
||||
RVERSIONPRE26(
|
||||
PROTECT(t = allocVector(STRSXP, 1));
|
||||
c = allocString(size);
|
||||
strncpy(CHAR(c), carray, size);
|
||||
SET_STRING_ELT(t, 0, c);
|
||||
UNPROTECT(1);
|
||||
UNPROTECT(1);)
|
||||
return t;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,23 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#include <Rdefines.h>
|
||||
#include <Rversion.h>
|
||||
#include <stdlib.h>
|
||||
#undef length
|
||||
#define SWIGR 1
|
||||
|
||||
#if R_VERSION >= R_Version(2,6,0)
|
||||
#warning "R Swig currently fails on runtime for 2.6 and higher."
|
||||
#warning "Contact maintainer if you would like to help fix"
|
||||
#define VMAXTYPE void *
|
||||
#define RVERSION26(x) x
|
||||
#define RVERSIONPRE26(x)
|
||||
#else
|
||||
#define VMAXTYPE char *
|
||||
#define RVERSION26(x)
|
||||
#define RVERSIONPRE26(x) x
|
||||
#endif
|
||||
|
||||
/*
|
||||
This is mainly a way to avoid having lots of local variables that may
|
||||
conflict with those in the routine.
|
||||
|
|
|
|||
|
|
@ -1758,7 +1758,7 @@ int R::functionWrapper(Node *n) {
|
|||
|
||||
Wrapper_add_local(f, "__r_nprotect", "unsigned int __r_nprotect = 0");
|
||||
Wrapper_add_localv(f, "r_ans", "SEXP", "r_ans = R_NilValue", NIL);
|
||||
Wrapper_add_localv(f, "r_vmax", "char *", "r_vmax = vmaxget()", NIL);
|
||||
Wrapper_add_localv(f, "r_vmax", "VMAXTYPE", "r_vmax = vmaxget()", NIL);
|
||||
|
||||
String *sargs = NewString("");
|
||||
|
||||
|
|
@ -2174,7 +2174,7 @@ int R::defineArrayAccessors(SwigType *type) {
|
|||
String *tmp = NewStringf("%s *ptr", SwigType_lstr(base, 0));
|
||||
String *tmp1 = NewStringf("%s result", SwigType_lstr(base, 0));
|
||||
|
||||
Wrapper_add_localv(cGetItem, "r_vmax", "char *", "r_vmax = vmaxget()", NIL);
|
||||
Wrapper_add_localv(cGetItem, "r_vmax", "VMAXTYPE", "r_vmax = vmaxget()", NIL);
|
||||
Wrapper_add_local(cGetItem, "ptr", tmp);
|
||||
Wrapper_add_local(cGetItem, "r_ans", "SEXP r_ans");
|
||||
Wrapper_add_local(cGetItem, "result", tmp1);
|
||||
|
|
@ -2219,7 +2219,7 @@ int R::defineArrayAccessors(SwigType *type) {
|
|||
tmp = NewStringf("%s *ptr", SwigType_lstr(base, 0));
|
||||
tmp1 = NewStringf("%s value", SwigType_lstr(base, 0));
|
||||
|
||||
Wrapper_add_localv(cSetItem, "r_vmax", "char *", "r_vmax = vmaxget()", NIL);
|
||||
Wrapper_add_localv(cSetItem, "r_vmax", "VMAXTYPE", "r_vmax = vmaxget()", NIL);
|
||||
Wrapper_add_local(cSetItem, "__r_nprotect", "int __r_nprotect = 0");
|
||||
|
||||
Wrapper_add_local(cSetItem, "ptr", tmp);
|
||||
|
|
@ -2580,7 +2580,7 @@ int R::generateCopyRoutinesObsolete(Node *n) {
|
|||
|
||||
|
||||
Wrapper_add_localv(toR, "r_obj", "SEXP", "r_obj", NIL);
|
||||
Wrapper_add_localv(toR, "r_vmax", "char *", "r_vmax = vmaxget()", NIL);
|
||||
Wrapper_add_localv(toR, "r_vmax", "VMAXTYPE", "r_vmax = vmaxget()", NIL);
|
||||
Wrapper_add_localv(toR, "_tmp_sexp", "SEXP", "_tmp_sexp", NIL);
|
||||
Wrapper_add_local(toR, "__r_nprotect", "int __r_nprotect = 0");
|
||||
Wrapper_add_local(toC, "ecode", "int ecode = 0");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue