Some more fixes to deal with constness of char
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10036 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
410da5ce73
commit
7037fecf7e
2 changed files with 14 additions and 12 deletions
17
Lib/r/r.swg
17
Lib/r/r.swg
|
|
@ -96,18 +96,23 @@ SWIG_InitializeModule(0);
|
|||
}
|
||||
|
||||
%typemap(in,noblock=1) char* {
|
||||
$1 = %reinterpret_cast(CHAR(STRING_ELT($input, 0)), $1_ltype);
|
||||
$1 = %reinterpret_cast(%const_cast(CHAR(STRING_ELT($input, 0)),
|
||||
char *), $1_ltype);
|
||||
}
|
||||
|
||||
%typemap(in,noblock=1) char *[ANY] {
|
||||
$1 = %reinterpret_cast(CHAR(STRING_ELT($input, 0)), $1_ltype);
|
||||
$1 = %reinterpret_cast(%const_cast(CHAR(STRING_ELT($input, 0)),
|
||||
char *),
|
||||
$1_ltype);
|
||||
}
|
||||
|
||||
%typemap(in,noblock=1) char[ANY]
|
||||
"$1 = CHAR(STRING_ELT($input, 0));";
|
||||
%typemap(in,noblock=1) char[ANY] {
|
||||
$1 = %const_cast(CHAR(STRING_ELT($input, 0)), char *);
|
||||
}
|
||||
|
||||
%typemap(in,noblock=1) char[]
|
||||
"$1 = CHAR(STRING_ELT($input, 0));";
|
||||
%typemap(in,noblock=1) char[] {
|
||||
$1 = %const_cast(CHAR(STRING_ELT($input, 0)), char *);
|
||||
}
|
||||
|
||||
%typemap(memberin) char[] %{
|
||||
if ($input) strcpy($1, $input);
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ SWIG_AsCharPtrAndSize(SEXP obj, char** cptr, size_t* psize, int *alloc)
|
|||
{
|
||||
if (!cptr) return SWIG_TypeError;
|
||||
if (!Rf_isString(obj)) return SWIG_TypeError;
|
||||
char *cstr; int len;
|
||||
const char *cstr; int len;
|
||||
cstr = CHAR(STRING_ELT(obj, 0));
|
||||
len = strlen(cstr);
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ SWIG_AsCharPtrAndSize(SEXP obj, char** cptr, size_t* psize, int *alloc)
|
|||
*alloc = SWIG_NEWOBJ;
|
||||
}
|
||||
else {
|
||||
*cptr = cstr;
|
||||
*cptr = strdup(cstr);
|
||||
*alloc = SWIG_OLDOBJ;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -156,10 +156,7 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
|
|||
{
|
||||
SEXP t, c;
|
||||
if (!carray) return R_NilValue;
|
||||
PROTECT(t = allocVector(STRSXP, 1));
|
||||
c = allocString(size);
|
||||
strncpy(CHAR(c), carray, size);
|
||||
SET_STRING_ELT(t, 0, c);
|
||||
PROTECT(t = Rf_mkCharEnc(carray, size));
|
||||
UNPROTECT(1);
|
||||
return t;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue