add li_cpointer and newobject2 test-suite

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-sploving@11511 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Baozeng Ding 2009-08-06 12:36:25 +00:00
commit c85685b60b
7 changed files with 94 additions and 51 deletions

View file

@ -24,8 +24,10 @@
%constant int iconst = 37; %constant int iconst = 37;
%constant double fconst = 3.14; %constant double fconst = 3.14;
%inline %{
void constant_test(const int x) { void constant_test(const int x) {
printf("%i", x); printf("%i", x);
} }
%}

View file

@ -23,6 +23,4 @@ catch
printf("FOO is not defined (good)\n"); printf("FOO is not defined (good)\n");
end end
constant_test(iconst);
exit exit

View file

@ -0,0 +1,8 @@
exec loader.sce;
p = new_intp();
intp_assign(p,3);
if intp_value(p) <> 3 then pause, end
exit

View file

@ -0,0 +1,15 @@
exec loader.sce;
x = makeFoo();
if fooCount() <> 1 then pause, end
y = makeFoo();
if fooCount() <> 2 then pause, end
delete_Foo(x);
if fooCount() <> 1 then pause, end
delete_Foo(y);
if fooCount() <> 0 then pause, end
exit

1
Lib/scilab/cmalloc.i Normal file
View file

@ -0,0 +1 @@
%include <typemaps/cmalloc.swg>

View file

@ -16,16 +16,17 @@
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
/* Basic C types */ /* Basic C types */
%typemap(in) signed char (int *piAddrVar, int iRows, int iCols), %typemap(in) signed char (int iRows, int iCols),
unsigned char (int *piAddrVar, int iRows, int iCols), unsigned char (int iRows, int iCols),
short (int *piAddrVar, int iRows, int iCols), short (int iRows, int iCols),
unsigned short (int *piAddrVar, int iRows, int iCols), unsigned short (int iRows, int iCols),
int (int *piAddrVar, int iRows, int iCols), int (int iRows, int iCols),
unsigned int (int *piAddrVar, int iRows, int iCols), unsigned int (int iRows, int iCols),
long (int *piAddrVar, int iRows, int iCols), long (int iRows, int iCols),
unsigned long (int *piAddrVar, int iRows, int iCols), unsigned long (int iRows, int iCols),
float (int *piAddrVar, int iRows, int iCols), float (int iRows, int iCols),
double (int *piAddrVar, int iRows, int iCols) { double (int iRows, int iCols) {
int *piAddrVar;
double *_piData; double *_piData;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
getVarDimension(piAddrVar, &iRows, &iCols); getVarDimension(piAddrVar, &iRows, &iCols);
@ -37,7 +38,8 @@
$1 = ($1_ltype)*_piData; $1 = ($1_ltype)*_piData;
} }
%typemap(in) char (int *piAddrVar, int iRows, int iCols) { %typemap(in) char (int iRows, int iCols) {
int *piAddrVar;
char *_pstStrings; char *_pstStrings;
int _piLength; int _piLength;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -51,16 +53,17 @@
} }
/* Pointers */ /* Pointers */
%typemap(in) signed char * (int *piAddrVar), %typemap(in) signed char *,
short * (int *piAddrVar), short *,
unsigned char * (int *piAddrVar), unsigned char *,
unsigned short * (int *piAddrVar), unsigned short *,
int * (int *piAddrVar), int *,
unsigned int * (int *piAddrVar), unsigned int *,
long * (int *piAddrVar), long *,
unsigned long * (int *piAddrVar), unsigned long *,
double * (int *piAddrVar), double *,
float * (int *piAddrVar) { float * {
int *piAddrVar;
void *_piData = NULL; void *_piData = NULL;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -71,7 +74,8 @@
$1 = ($1_ltype)_piData; $1 = ($1_ltype)_piData;
} }
%typemap(in) char * (int *piAddrVar, int iRows, int iCols){ %typemap(in) char * (int iRows, int iCols){
int *piAddrVar;
char *_pstStrings; char *_pstStrings;
int _piLength; int _piLength;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -84,7 +88,8 @@
$1 = strdup(_pstStrings); $1 = strdup(_pstStrings);
} }
%typemap(in) signed char [ANY] (int *piAddrVar, int iRows, int iCols) { %typemap(in) signed char [ANY] (int iRows, int iCols) {
int *piAddrVar;
char *_piData; char *_piData;
int index; int index;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -99,8 +104,9 @@
} }
} }
%typemap(in) short [ANY] (int *piAddrVar, int iRows, int iCols), %typemap(in) short [ANY] (int iRows, int iCols),
unsigned char [ANY] (int *piAddrVar, int iRows, int iCols) { unsigned char [ANY] (int iRows, int iCols) {
int *piAddrVar;
short *_piData; short *_piData;
int index; int index;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -115,11 +121,12 @@
} }
} }
%typemap(in) unsigned short [ANY] (int *piAddrVar, int iRows, int iCols), %typemap(in) unsigned short [ANY] (int iRows, int iCols),
int [ANY] (int *piAddrVar, int iRows, int iCols), int [ANY] (int iRows, int iCols),
unsigned int [ANY] (int *piAddrVar, int iRows, int iCols), unsigned int [ANY] (int iRows, int iCols),
long [ANY] (int *piAddrVar, int iRows, int iCols), long [ANY] (int iRows, int iCols),
unsigned long [ANY] (int *piAddrVar, int iRows, int iCols) { unsigned long [ANY] (int iRows, int iCols) {
int *piAddrVar;
int *_piData; int *_piData;
int index; int index;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -134,8 +141,9 @@
} }
} }
%typemap(in) double [ANY] (int *piAddrVar, int iRows, int iCols), %typemap(in) double [ANY] (int iRows, int iCols),
float [ANY] (int *piAddrVar, int iRows, int iCols){ float [ANY] (int iRows, int iCols) {
int *piAddrVar;
double *_piData; double *_piData;
int index; int index;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -150,7 +158,8 @@
} }
} }
%typemap(in) char [ANY] (int *piAddrVar, int iRows, int iCols){ %typemap(in) char [ANY] (int iRows, int iCols) {
int *piAddrVar;
char *_pstStrings; char *_pstStrings;
int _piLength; int _piLength;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -164,7 +173,8 @@
} }
/* Arrays */ /* Arrays */
%typemap(in) signed char [ANY][ANY] (int *piAddrVar, int iRows, int iCols) { %typemap(in) signed char [ANY][ANY] (int iRows, int iCols) {
int *piAddrVar;
char *_piData; char *_piData;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
getVarDimension(piAddrVar, &iRows, &iCols); getVarDimension(piAddrVar, &iRows, &iCols);
@ -186,8 +196,9 @@
} }
} }
%typemap(in) short [ANY][ANY] (int *piAddrVar, int iRows, int iCols), %typemap(in) short [ANY][ANY] (int iRows, int iCols),
unsigned char [ANY][ANY] (int *piAddrVar, int iRows, int iCols) { unsigned char [ANY][ANY] (int iRows, int iCols) {
int *piAddrVar;
short *_piData; short *_piData;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
getVarDimension(piAddrVar, &iRows, &iCols); getVarDimension(piAddrVar, &iRows, &iCols);
@ -209,11 +220,12 @@
} }
} }
%typemap(in) unsigned short [ANY][ANY] (int *piAddrVar, int iRows, int iCols), %typemap(in) unsigned short [ANY][ANY] (int iRows, int iCols),
int [ANY][ANY] (int *piAddrVar, int iRows, int iCols), int [ANY][ANY] (int iRows, int iCols),
unsigned int [ANY][ANY] (int *piAddrVar, int iRows, int iCols), unsigned int [ANY][ANY] (int iRows, int iCols),
long [ANY][ANY] (int *piAddrVar, int iRows, int iCols), long [ANY][ANY] (int iRows, int iCols),
unsigned long [ANY][ANY] (int *piAddrVar, int iRows, int iCols){ unsigned long [ANY][ANY] (int iRows, int iCols){
int *piAddrVar;
int *_piData; int *_piData;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
getVarDimension(piAddrVar, &iRows, &iCols); getVarDimension(piAddrVar, &iRows, &iCols);
@ -236,8 +248,9 @@
} }
%typemap(in) double [ANY][ANY] (int *piAddrVar, int iRows, int iCols), %typemap(in) double [ANY][ANY] (int iRows, int iCols),
float [ANY][ANY] (int *piAddrVar, int iRows, int iCols) { float [ANY][ANY] (int iRows, int iCols) {
int *piAddrVar;
double *_piData; double *_piData;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
getVarDimension(piAddrVar, &iRows, &iCols); getVarDimension(piAddrVar, &iRows, &iCols);
@ -259,7 +272,8 @@
} }
} }
%typemap(in) SWIGTYPE * (int *piAddrVar) { %typemap(in) SWIGTYPE * {
int *piAddrVar;
void *_piData = NULL; void *_piData = NULL;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -271,6 +285,7 @@
} }
%typemap(in) SWIGTYPE { %typemap(in) SWIGTYPE {
int *piAddrVar;
void *_piData = NULL; void *_piData = NULL;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -614,7 +629,7 @@
$1 = _pstStrings; $1 = _pstStrings;
} }
%typemap(varin,noblock=1) SWIGTYPE *(int *piAddrVar) { %typemap(varin,noblock=1) SWIGTYPE * {
void *_piData = NULL; void *_piData = NULL;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -625,7 +640,7 @@
$1 = ($1_ltype)_piData; $1 = ($1_ltype)_piData;
} }
%typemap(varin,noblock=1) SWIGTYPE [ANY] (int *piAddrVar) { %typemap(varin,noblock=1) SWIGTYPE [ANY] {
void *_piData = NULL; void *_piData = NULL;
int index; int index;
getVarAddressFromPosition($argnum, &piAddrVar); getVarAddressFromPosition($argnum, &piAddrVar);
@ -800,3 +815,4 @@
* ------------------------------------------------------------ */ * ------------------------------------------------------------ */
%apply int { enum SWIGTYPE }; %apply int { enum SWIGTYPE };
%apply int { size_t };

View file

@ -235,6 +235,9 @@ public:
continue; continue;
} }
String *getargs = NewString(""); String *getargs = NewString("");
if (j >= num_required)
Printf(getargs, "if (Rhs > %d) {\n%s\n}", j, tm);
else
Printv(getargs, tm, NIL); Printv(getargs, tm, NIL);
Printv(f->code, getargs, "\n", NIL); Printv(f->code, getargs, "\n", NIL);
Delete(getargs); Delete(getargs);
@ -307,7 +310,7 @@ public:
else { else {
flag = 1; flag = 1;
} }
Printf(f->def, "CheckRhs(%d, %d);\n",num_required,num_required); Printf(f->def, "CheckRhs(%d, %d);\n",num_required,num_arguments);
Printf(f->def, "CheckLhs(%d, %d);\n",out_required,out_required); Printf(f->def, "CheckLhs(%d, %d);\n",out_required,out_required);
/* Insert the order of output parameters*/ /* Insert the order of output parameters*/