put in integer fixes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11059 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
88e60d75c9
commit
809bbb89e3
3 changed files with 77 additions and 11 deletions
|
|
@ -1,6 +1,9 @@
|
||||||
Version 1.3.37 (30 December 2008)
|
Version 1.3.37 (30 December 2008)
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
|
2009-01-12: drjoe
|
||||||
|
Fixed handling of integer arrays
|
||||||
|
|
||||||
2009-01-10: drjoe
|
2009-01-10: drjoe
|
||||||
Fix integer handling in r to deal correctly with signed
|
Fix integer handling in r to deal correctly with signed
|
||||||
and unsigned issues
|
and unsigned issues
|
||||||
|
|
|
||||||
60
Lib/r/r.swg
60
Lib/r/r.swg
|
|
@ -56,13 +56,61 @@ SWIG_InitializeModule(0);
|
||||||
%typemap(out) void "";
|
%typemap(out) void "";
|
||||||
|
|
||||||
%typemap(in) int *, int[ANY],
|
%typemap(in) int *, int[ANY],
|
||||||
long *, long[ANY] %{
|
signed int *, signed int[ANY],
|
||||||
$1 = INTEGER($input);
|
unsigned int *, unsigned int[ANY],
|
||||||
|
short *, short[ANY],
|
||||||
|
signed short *, signed short[ANY],
|
||||||
|
unsigned short *, unsigned short[ANY],
|
||||||
|
long *, long[ANY],
|
||||||
|
signed long *, signed long[ANY],
|
||||||
|
unsigned long *, unsigned long[ANY],
|
||||||
|
long long *, long long[ANY],
|
||||||
|
signed long long *, signed long long[ANY],
|
||||||
|
unsigned long long *, unsigned long long[ANY]
|
||||||
|
|
||||||
|
{
|
||||||
|
{ int _rswigi;
|
||||||
|
int _rswiglen = LENGTH($input);
|
||||||
|
$1 = %static_cast(calloc(sizeof($1_basetype), _rswiglen), $1_ltype);
|
||||||
|
for (_rswigi=0; _rswigi< _rswiglen; _rswigi++) {
|
||||||
|
$1[_rswigi] = INTEGER($input)[_rswigi];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%typemap(in) float *, float[ANY],
|
||||||
|
double *, double[ANY]
|
||||||
|
|
||||||
|
{
|
||||||
|
{ int _rswigi;
|
||||||
|
int _rswiglen = LENGTH($input);
|
||||||
|
$1 = %static_cast(calloc(sizeof($1_basetype), _rswiglen), $1_ltype);
|
||||||
|
for (_rswigi=0; _rswigi<_rswiglen; _rswigi++) {
|
||||||
|
$1[_rswigi] = REAL($input)[_rswigi];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%typemap(freearg,noblock=1) int *, int[ANY],
|
||||||
|
signed int *, signed int[ANY],
|
||||||
|
unsigned int *, unsigned int[ANY],
|
||||||
|
short *, short[ANY],
|
||||||
|
signed short *, signed short[ANY],
|
||||||
|
unsigned short *, unsigned short[ANY],
|
||||||
|
long *, long[ANY],
|
||||||
|
signed long *, signed long[ANY],
|
||||||
|
unsigned long *, unsigned long[ANY],
|
||||||
|
long long *, long long[ANY],
|
||||||
|
signed long long *, signed long long[ANY],
|
||||||
|
unsigned long long *, unsigned long long[ANY],
|
||||||
|
float *, float[ANY],
|
||||||
|
double *, double[ANY]
|
||||||
|
%{
|
||||||
|
free($1);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%typemap(in) double *, double[ANY] %{
|
|
||||||
$1 = REAL($input);
|
|
||||||
%}
|
|
||||||
|
|
||||||
/* Shoul dwe recycle to make the length correct.
|
/* Shoul dwe recycle to make the length correct.
|
||||||
And warn if length() > the dimension.
|
And warn if length() > the dimension.
|
||||||
|
|
@ -92,8 +140,6 @@ SWIG_InitializeModule(0);
|
||||||
%include <typemaps/swigtypemaps.swg>
|
%include <typemaps/swigtypemaps.swg>
|
||||||
%include <rtype.swg>
|
%include <rtype.swg>
|
||||||
|
|
||||||
%apply int[ANY] { enum SWIGTYPE[ANY] };
|
|
||||||
|
|
||||||
%typemap(in,noblock=1) enum SWIGTYPE[ANY] {
|
%typemap(in,noblock=1) enum SWIGTYPE[ANY] {
|
||||||
$1 = %reinterpret_cast(INTEGER($input), $1_ltype);
|
$1 = %reinterpret_cast(INTEGER($input), $1_ltype);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
for use in class representations.
|
for use in class representations.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%typemap("rtype") int, int *, int & "numeric";
|
%typemap("rtype") int, int *, int & "integer";
|
||||||
%apply int {size_t}
|
%apply int {size_t}
|
||||||
%apply int {std::size_t}
|
%apply int {std::size_t}
|
||||||
%apply int {ptrdiff_t}
|
%apply int {ptrdiff_t}
|
||||||
|
|
@ -13,11 +13,11 @@
|
||||||
%apply int {short}
|
%apply int {short}
|
||||||
%apply int {unsigned short}
|
%apply int {unsigned short}
|
||||||
|
|
||||||
%typemap("rtype") long, long *, long & "numeric";
|
%typemap("rtype") long, long *, long & "integer";
|
||||||
%apply long {long long}
|
%apply long {long long}
|
||||||
%apply long {signed long long}
|
%apply long {signed long long}
|
||||||
%apply long {unsigned long long}
|
%apply long {unsigned long long}
|
||||||
%apply long {unsigned long}
|
%apply long {signed long}
|
||||||
%apply long {unsigned long}
|
%apply long {unsigned long}
|
||||||
|
|
||||||
%typemap("rtype") double, double*, double & "numeric";
|
%typemap("rtype") double, double*, double & "numeric";
|
||||||
|
|
@ -143,7 +143,24 @@ string &, std::string &
|
||||||
std::string,
|
std::string,
|
||||||
string &,
|
string &,
|
||||||
std::string &,
|
std::string &,
|
||||||
void
|
void,
|
||||||
|
signed int,
|
||||||
|
signed int &,
|
||||||
|
unsigned int,
|
||||||
|
unsigned int &,
|
||||||
|
short,
|
||||||
|
short &,
|
||||||
|
unsigned short,
|
||||||
|
unsigned short &,
|
||||||
|
long long,
|
||||||
|
signed long long,
|
||||||
|
signed long long &,
|
||||||
|
unsigned long long,
|
||||||
|
unsigned long long &,
|
||||||
|
signed long,
|
||||||
|
signed long &,
|
||||||
|
unsigned long,
|
||||||
|
unsigned long &
|
||||||
%{ %}
|
%{ %}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue