From: <sm...@us...> - 2009-01-20 08:05:28
|
Revision: 9353 http://plplot.svn.sourceforge.net/plplot/?rev=9353&view=rev Author: smekal Date: 2009-01-20 08:05:23 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Added new typemaps. pl.parseopt() is now fully supported. All commands are now in the "pl" namespace by default and the "pl" is ripped off from the default function names, so e.g. pllab() in Lua is pl.lab(), except end, which is still called via pl.plend(). Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-01-20 08:00:54 UTC (rev 9352) +++ trunk/bindings/lua/plplotluac.i 2009-01-20 08:05:23 UTC (rev 9353) @@ -148,15 +148,17 @@ /* with preceding count */ %typemap(in) (PLINT n, PLFLT *Array) { - $2 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &$1); + int temp; + $2 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); if(!$2) SWIG_fail; - Alen = $1; + $1 = Alen = temp; } %typemap(freearg) (PLINT n, PLFLT *Array) { SWIG_FREE_ARRAY($2); } /* Trailing count and check consistency with previous */ -%typemap(in) (PLFLT *ArrayCk, PLINT n) (int temp) { +%typemap(in) (PLFLT *ArrayCk, PLINT n) { + int temp; $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp != Alen) { @@ -181,7 +183,8 @@ /* No length but remember size to check others */ -%typemap(in) PLFLT *Array (int temp) { +%typemap(in) PLFLT *Array { + int temp; $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; Alen = temp; @@ -189,7 +192,139 @@ %typemap(freearg) (PLFLT *Array) { SWIG_FREE_ARRAY($1); } +/* with trailing count */ +%typemap(in) (PLFLT *Array, PLINT n) { + int temp; + $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + if(!$1) SWIG_fail; + $2 = Alen = temp; +} +%typemap(freearg) (PLFLT *Array, PLINT n) { SWIG_FREE_ARRAY($1); } + + +/* check consistency with X dimension of previous */ +%typemap(in) PLFLT *ArrayCkX { + int temp; + $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + if(!$1) SWIG_fail; + if(temp != Xlen) { + lua_pushfstring(L, "Tables must be of same length."); + SWIG_fail; + } +} +%typemap(freearg) PLFLT *ArrayCkX { SWIG_FREE_ARRAY($1); } + + +/* check consistency with Y dimension of previous */ +%typemap(in) PLFLT *ArrayCkY { + int temp; + $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + if(!$1) SWIG_fail; + if(temp != Ylen) { + lua_pushfstring(L, "Tables must be of same length."); + SWIG_fail; + } +} +%typemap(freearg) PLFLT *ArrayCkY { SWIG_FREE_ARRAY($1); } + + +/* set X length for later consistency checking, with trailing count */ +%typemap(in) (PLFLT *ArrayX, PLINT nx) { + int temp; + $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + if(!$1) SWIG_fail; + $2 = Xlen = temp; +} +%typemap(freearg) (PLFLT *ArrayX, PLINT nx) { SWIG_FREE_ARRAY($1); } + + +/* set X length for later consistency checking */ +%typemap(in) PLFLT *ArrayX { + int temp; + $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + if(!$1) SWIG_fail; + Xlen = temp; +} +%typemap(freearg) PLFLT *ArrayX { SWIG_FREE_ARRAY($1); } + + +/* Set Y length for later consistency checking, with trailing count */ +%typemap(in) (PLFLT *ArrayY, PLINT ny) { + int temp; + $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + if(!$1) SWIG_fail; + $2 = Ylen = temp; +} +%typemap(freearg) (PLFLT *ArrayY, PLINT ny) { SWIG_FREE_ARRAY($1); } + + +/* set Y length for later consistency checking */ +%typemap(in) PLFLT *ArrayY { + int temp; + $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + if(!$1) SWIG_fail; + Ylen = temp; +} +%typemap(freearg) (PLFLT *ArrayY) { SWIG_FREE_ARRAY($1); } + + +/* 2D array with trailing dimensions, check consistency with previous */ +%typemap(in) (PLFLT **MatrixCk, PLINT nx, PLINT ny) { +} +%typemap(freearg) (PLFLT **MatrixCk, PLINT nx, PLINT ny) { +} + + +/* 2D array with trailing dimensions, set the X, Y size for later checking */ +%typemap(in) (PLFLT **Matrix, PLINT nx, PLINT ny) { +} +%typemap(freearg) (PLFLT **Matrix, PLINT nx, PLINT ny) { +} + + +/* 2D array with no dimensions, set the X, Y size for later checking */ +%typemap(in) PLFLT **Matrix { +} +%typemap(freearg) PLFLT **Matrix { +} + + +/* for plshade1, note the difference in the type for the first arg */ +%typemap(in) (PLFLT *Matrix, PLINT nx, PLINT ny) { +} +%typemap(freearg) (PLFLT *Matrix, PLINT nx, PLINT ny) { +} + +/* 2D array, check for consistency */ +%typemap(in) PLFLT **MatrixCk { +} +%typemap(freearg) PLFLT **MatrixCk { +} + +/* 2D array, check for consistency input / output version */ +%typemap(in) PLFLT **OutMatrixCk { +} +%typemap(freearg) PLFLT **OutMatrixCk { +} + + /****************************************************************************** + String returning functions +******************************************************************************/ + +/* This currently just used for plgdev, plgfnam, and plgver which apparently + * have a limit of 80 bytes. But to (hopefully) be safe for any future use + * have a 1000 byte limit here. */ +%typemap(in, numinputs=0) char *OUTPUT ( char buff[1000] ) { + $1 = buff; +} +/*%typemap(argout,fragment="t_output_helper") char *OUTPUT { + PyObject *o = PyString_FromString($1); + $result = t_output_helper($result,o); +}*/ + + +/****************************************************************************** Function calls ******************************************************************************/ @@ -230,14 +365,9 @@ } /* Process options list using current options info. */ -%typemap(in) (int *p_argc, const char **argv) { +%typemap(in, checkfn="lua_istable") (int *p_argc, const char **argv) { int i, n; - if(!lua_istable(L, $input)) { - lua_pushstring(L,"expected a table"); - SWIG_fail; - } - lua_pushstring(L, "n"); lua_gettable(L, $input); if(!lua_isnumber(L, -1)) { @@ -247,16 +377,14 @@ n = (int)lua_tonumber(L, -1); lua_pop(L, 1); /* remove number */ n=n+1; /* since lua only counts the options */ - printf("n=%d\n", n); $1 = &n; - $2 = SWIG_ALLOC_ARRAY(char*, n+1); + $2 = SWIG_ALLOC_ARRAY(char*, (n+1)); for(i = 0; i < n; i++) { lua_rawgeti(L, $input, i); if(lua_isstring(L, -1)) { $2[i] = (char*)lua_tostring(L, -1); - printf("argv[%d]=%s\n", i, $2[i]); } else { lua_pop(L,1); lua_pushfstring(L, "List items must be strings"); @@ -265,15 +393,11 @@ } lua_pop(L,1); } - puts("here"); $2[n] = NULL; } %typemap(freearg) (int *p_argc, const char **argv) { SWIG_FREE_ARRAY($2); } -%typemap(in,checkfn="lua_isnumber") PLINT mode { - $1 = ((int)lua_tonumber(L,$input)) | PL_PARSE_NODELETE; -} %ignore plshades; @@ -289,6 +413,158 @@ Renames ******************************************************************************/ %rename(parseopts) plparseopts; +%rename(adv) pladv; +%rename(axes) plaxes; +%rename(bin) plbin; +%rename(bop) plbop; +%rename(box) plbox; +%rename(box3) plbox3; +%rename(calworld) plcalworld; +%rename(clear) plclear; +%rename(col0) plcol0; +%rename(col1) plcol1; +%rename(cont) plcont; +%rename(cpstrm) plcpstrm; +%rename(plend) plend; +%rename(end1) plend1; +%rename(env) plenv; +%rename(env0) plenv0; +%rename(eop) pleop; +%rename(errx) plerrx; +%rename(erry) plerry; +%rename(famadv) plfamadv; +%rename(fill) plfill; +%rename(fill3) plfill3; +%rename(flush) plflush; +%rename(font) plfont; +%rename(fontld) plfontld; +%rename(gchr) plgchr; +%rename(gcol0) plgcol0; +%rename(gcolbg) plgcolbg; +%rename(gcol0a) plgcol0a; +%rename(gcolbga) plgcolbga; +%rename(gcompression) plgcompression; +%rename(gdev) plgdev; +%rename(gdidev) plgdidev; +%rename(gdiori) plgdiori; +%rename(gdiplt) plgdiplt; +%rename(gfam) plgfam; +%rename(gfci) plgfci; +%rename(gfnam) plgfnam; +%rename(gfont) plgfont; +%rename(glevel) plglevel; +%rename(gpage) plgpage; +%rename(gra) plgra; +%rename(griddata) plgriddata; +%rename(gspa) plgspa; +%rename(gstrm) plgstrm; +%rename(gver) plgver; +%rename(gvpd) plgvpd; +%rename(gvpw) plgvpw; +%rename(gxax) plgxax; +%rename(gyax) plgyax; +%rename(gzax) plgzax; +%rename(hist) plhist; +%rename(hls) plhls; +%rename(hlsrgb) plhlsrgb; +%rename(image) plimage; +%rename(imagefr) plimagefr; +%rename(init) plinit; +%rename(join) pljoin; +%rename(lab) pllab; +%rename(lightsource) pllightsource; +%rename(line) plline; +%rename(line3) plline3; +%rename(lsty) pllsty; +%rename(map) plmap; +%rename(meridians) plmeridians; +%rename(mesh) plmesh; +%rename(meshc) plmeshc; +%rename(mkstrm) plmkstrm; +%rename(mtex) plmtex; +%rename(mtex3) plmtex3; +%rename(ot3d) plot3d; +%rename(ot3dc) plot3dc; +%rename(ot3dcl) plot3dcl; +%rename(parseopts) plparseopts; +%rename(pat) plpat; +%rename(poin) plpoin; +%rename(poin3) plpoin3; +%rename(poly3) plpoly3; +%rename(prec) plprec; +%rename(psty) plpsty; +%rename(ptex) plptex; +%rename(ptex3) plptex3; +%rename(randd) plrandd; +%rename(replot) plreplot; +%rename(rgb) plrgb; +%rename(rgb1) plrgb1; +%rename(rgbhls) plrgbhls; +%rename(schr) plschr; +%rename(scmap0) plscmap0; +%rename(scmap0a) plscmap0a; +%rename(scmap0n) plscmap0n; +%rename(scmap1) plscmap1; +%rename(scmap1a) plscmap1a; +%rename(scmap1l) plscmap1l; +%rename(scmap1la) plscmap1la; +%rename(scmap1n) plscmap1n; +%rename(scol0) plscol0; +%rename(scol0a) plscol0a; +%rename(scolbg) plscolbg; +%rename(scolbga) plscolbga; +%rename(scolor) plscolor; +%rename(scompression) plscompression; +%rename(sdev) plsdev; +%rename(sdidev) plsdidev; +%rename(sdimap) plsdimap; +%rename(sdiori) plsdiori; +%rename(sdiplt) plsdiplt; +%rename(sdiplz) plsdiplz; +%rename(seed) plseed; +%rename(sesc) plsesc; +%rename(setopt) plsetopt; +%rename(sfam) plsfam; +%rename(sfci) plsfci; +%rename(sfnam) plsfnam; +%rename(sfont) plsfont; +%rename(shade) plshade; +%rename(shade1) plshade1; +%rename(shades) plshades; +%rename(smaj) plsmaj; +%rename(smem) plsmem; +%rename(smin) plsmin; +%rename(sori) plsori; +%rename(spage) plspage; +%rename(spause) plspause; +%rename(sstrm) plsstrm; +%rename(ssub) plssub; +%rename(ssym) plssym; +%rename(star) plstar; +%rename(start) plstart; +%rename(stripa) plstripa; +%rename(stripc) plstripc; +%rename(stripd) plstripd; +%rename(styl) plstyl; +%rename(surf3d) plsurf3d; +%rename(surf3dl) plsurf3dl; +%rename(svect) plsvect; +%rename(svpa) plsvpa; +%rename(sxax) plsxax; +%rename(syax) plsyax; +%rename(sym) plsym; +%rename(szax) plszax; +%rename(text) pltext; +%rename(timefmt) pltimefmt; +%rename(vasp) plvasp; +%rename(vect) plvect; +%rename(vpas) plvpas; +%rename(vpor) plvpor; +%rename(vsta) plvsta; +%rename(w3d) plw3d; +%rename(wid) plwid; +%rename(wind) plwind; +%rename(xormod) plxormod; /* swig compatible PLplot API definitions from here on. */ %include plplotcapi.i This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-26 20:58:24
|
Revision: 9395 http://plplot.svn.sourceforge.net/plplot/?rev=9395&view=rev Author: smekal Date: 2009-01-26 20:58:13 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Added most of the matrix typemaps. Corrected some renames. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-01-26 20:36:19 UTC (rev 9394) +++ trunk/bindings/lua/plplotluac.i 2009-01-26 20:58:13 UTC (rev 9395) @@ -268,43 +268,177 @@ %typemap(freearg) (PLFLT *ArrayY) { SWIG_FREE_ARRAY($1); } +%{ +PLFLT** read_double_Matrix( lua_State* L, int index, int* nx, int *ny ) +{ + int i, j; + PLFLT** matrix; + + if (!lua_istable(L, index)) { + lua_pushstring(L,"expected a table"); + return NULL; + } + *nx=SWIG_itable_size(L, index); + if (*nx<1) { + lua_pushstring(L,"table appears to be empty"); + return NULL; + } + matrix=SWIG_ALLOC_ARRAY(PLFLT*,*nx); + for (i = 0; i < *nx; i++) + matrix[i] = NULL; + + lua_rawgeti(L, index, 1); + *ny=SWIG_itable_size(L,-1); + if (*ny<1) { + lua_pushstring(L,"table appears to be empty"); + SWIG_FREE_ARRAY(matrix); + return NULL; + } + lua_pop(L,1); + + for (i = 0; i < *nx; i++) { + lua_rawgeti(L, index, i+1); + if (!lua_istable(L,-1)) { + lua_pop(L,1); + lua_pushstring(L,"expected a table"); + for (j = 0; j < *ny; j++) + SWIG_FREE_ARRAY(matrix[j]); + SWIG_FREE_ARRAY(matrix); + return NULL; + } + if (*ny!=SWIG_itable_size(L,-1)) { + lua_pop(L,1); + lua_pushstring(L,"inconsistent table sizes"); + for (j = 0; j < *ny; j++) + SWIG_FREE_ARRAY(matrix[j]); + SWIG_FREE_ARRAY(matrix); + return NULL; + } + matrix[i]=SWIG_ALLOC_ARRAY(PLFLT, *ny); + for (j = 0; j < *ny; j++) { + lua_rawgeti(L, -1, j+1); + if(lua_isnumber(L,-1)) { + matrix[i][j] = (PLFLT)lua_tonumber(L,-1); + } else { + lua_pop(L,1); + lua_pushstring(L,"table must contain numbers"); + for (j = 0; j < *ny; j++) + SWIG_FREE_ARRAY(matrix[j]); + SWIG_FREE_ARRAY(matrix); + return NULL; + } + lua_pop(L,1); + } + lua_pop(L,1); + } + + return matrix; +} +%} + + /* 2D array with trailing dimensions, check consistency with previous */ -%typemap(in) (PLFLT **MatrixCk, PLINT nx, PLINT ny) { +%typemap(in) (PLFLT **MatrixCk, PLINT nx, PLINT ny) (int ii) { + int jj; + + $1 = read_double_Matrix(L, $input, &ii, &jj ); + if(!$1) SWIG_fail; + $2 = ii; + $3 = jj; + if( ($2!=Xlen) || ($3!=Ylen) ) { + lua_pushfstring(L, "Vectors must match matrix."); + SWIG_fail; + } } %typemap(freearg) (PLFLT **MatrixCk, PLINT nx, PLINT ny) { + int i; + + for (i = 0; i < ii$argnum; i++) + SWIG_FREE_ARRAY($1[i]); + SWIG_FREE_ARRAY($1); } /* 2D array with trailing dimensions, set the X, Y size for later checking */ -%typemap(in) (PLFLT **Matrix, PLINT nx, PLINT ny) { +%typemap(in) (PLFLT **Matrix, PLINT nx, PLINT ny) (int ii) { + int jj; + + $1 = read_double_Matrix(L, $input, &ii, &jj ); + if(!$1) SWIG_fail; + Xlen = $2 = ii; + Ylen = $3 = jj; } %typemap(freearg) (PLFLT **Matrix, PLINT nx, PLINT ny) { + int i; + + for (i = 0; i < ii$argnum; i++) + SWIG_FREE_ARRAY($1[i]); + SWIG_FREE_ARRAY($1); } /* 2D array with no dimensions, set the X, Y size for later checking */ -%typemap(in) PLFLT **Matrix { +%typemap(in) PLFLT **Matrix (int ii) { + int jj; + + $1 = read_double_Matrix(L, $input, &ii, &jj ); + if(!$1) SWIG_fail; + Xlen = ii; + Ylen = jj; } %typemap(freearg) PLFLT **Matrix { + int i; + + for (i = 0; i < ii$argnum; i++) + SWIG_FREE_ARRAY($1[i]); + SWIG_FREE_ARRAY($1); } /* for plshade1, note the difference in the type for the first arg */ -%typemap(in) (PLFLT *Matrix, PLINT nx, PLINT ny) { +%typemap(in) (PLFLT *Matrix, PLINT nx, PLINT ny) (int ii) { } %typemap(freearg) (PLFLT *Matrix, PLINT nx, PLINT ny) { } + /* 2D array, check for consistency */ -%typemap(in) PLFLT **MatrixCk { +%typemap(in) PLFLT **MatrixCk (int ii) { + int jj; + + $1 = read_double_Matrix(L, $input, &ii, &jj ); + if(!$1) SWIG_fail; + if( (ii!=Xlen) || (jj!=Ylen) ) { + lua_pushfstring(L, "Vectors must match matrix."); + SWIG_fail; + } } %typemap(freearg) PLFLT **MatrixCk { + int i; + + for (i = 0; i < ii$argnum; i++) + SWIG_FREE_ARRAY($1[i]); + SWIG_FREE_ARRAY($1); } + /* 2D array, check for consistency input / output version */ -%typemap(in) PLFLT **OutMatrixCk { +%typemap(in) PLFLT **OutMatrixCk (int ii) { + int jj; + + $1 = read_double_Matrix(L, $input, &ii, &jj ); + if(!$1) SWIG_fail; + if( (ii!=Xlen) || (jj!=Ylen) ) { + lua_pushfstring(L, "Vectors must match matrix."); + SWIG_fail; + } } %typemap(freearg) PLFLT **OutMatrixCk { + int i; + + for (i = 0; i < ii$argnum; i++) + SWIG_FREE_ARRAY($1[i]); + SWIG_FREE_ARRAY($1); } @@ -483,9 +617,9 @@ %rename(mkstrm) plmkstrm; %rename(mtex) plmtex; %rename(mtex3) plmtex3; -%rename(ot3d) plot3d; -%rename(ot3dc) plot3dc; -%rename(ot3dcl) plot3dcl; +%rename(plot3d) plot3d; +%rename(plot3dc) plot3dc; +%rename(plot3dcl) plot3dcl; %rename(parseopts) plparseopts; %rename(pat) plpat; %rename(poin) plpoin; @@ -565,6 +699,7 @@ %rename(wid) plwid; %rename(wind) plwind; %rename(xormod) plxormod; +%rename(MinMax2dGrid) plMinMax2dGrid; /* swig compatible PLplot API definitions from here on. */ %include plplotcapi.i This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-26 22:58:31
|
Revision: 9401 http://plplot.svn.sourceforge.net/plplot/?rev=9401&view=rev Author: smekal Date: 2009-01-26 22:58:21 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Further improvement and bug fixing of Lua bindings. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-01-26 22:57:00 UTC (rev 9400) +++ trunk/bindings/lua/plplotluac.i 2009-01-26 22:58:21 UTC (rev 9401) @@ -37,6 +37,55 @@ #include "plplotP.h" %} + +/* macro definitions */ +%{ +#define LUA_ALLOC_ARRAY(TYPE,LEN) (TYPE *)malloc(LEN*sizeof(TYPE)) +#define LUA_FREE_ARRAY(PTR) if(PTR) {free(PTR); PTR=NULL;} + +/* super macro to declare array typemap helper fns */ +int SWIG_itable_size(lua_State* L, int index); +#define LUA_DECLARE_TYPEMAP_ARR_FN(NAME,TYPE)\ + SWIGINTERN int LUA_read_##NAME##_num_array(lua_State* L,int index,TYPE *array,int size){\ + int i;\ + for (i = 0; i < size; i++) {\ + lua_rawgeti(L,index,i+1);\ + if (lua_isnumber(L,-1)){\ + array[i] = (TYPE)lua_tonumber(L,-1);\ + } else {\ + lua_pop(L,1);\ + return 0;\ + }\ + lua_pop(L,1);\ + }\ + return 1;\ + }\ + SWIGINTERN TYPE* LUA_get_##NAME##_num_array_var(lua_State* L, int index, int* size)\ + {\ + TYPE *array;\ + if (!lua_istable(L,index)) {\ + lua_pushstring(L,"expected a table");\ + return 0;\ + }\ + *size=SWIG_itable_size(L,index);\ + if (*size<1){\ + array=LUA_ALLOC_ARRAY(TYPE,1);\ + array[0]=(TYPE)0;\ + return array;\ + }\ + array=LUA_ALLOC_ARRAY(TYPE,*size);\ + if (!LUA_read_##NAME##_num_array(L,index,array,*size)){\ + lua_pushstring(L,"table must contain numbers");\ + LUA_FREE_ARRAY(array);\ + return 0;\ + }\ + return array;\ + } + +LUA_DECLARE_TYPEMAP_ARR_FN(double,double); +LUA_DECLARE_TYPEMAP_ARR_FN(int,int); +%} + /* type definitions */ typedef double PLFLT; typedef int PLINT; @@ -79,16 +128,16 @@ /* With preceding count */ %typemap(in) (PLINT n, PLINT *Array) { - $2 = (PLINT*)SWIG_get_int_num_array_var(L, $input, &$1); + $2 = (PLINT*)LUA_get_int_num_array_var(L, $input, &$1); if(!$2) SWIG_fail; Alen = $1; } -%typemap(freearg) (PLINT n, PLINT *Array) { SWIG_FREE_ARRAY($2); } +%typemap(freearg) (PLINT n, PLINT *Array) { LUA_FREE_ARRAY($2); } /* Trailing count and check consistency with previous */ %typemap(in) (PLINT *ArrayCk, PLINT n) (int temp) { - $1 = (PLINT*)SWIG_get_int_num_array_var(L, $input, &temp); + $1 = (PLINT*)LUA_get_int_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp != Alen) { lua_pushfstring(L, "Tables must be of same length."); @@ -96,50 +145,50 @@ } $2 = temp; } -%typemap(freearg) (PLINT *ArrayCk, PLINT n) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLINT *ArrayCk, PLINT n) { LUA_FREE_ARRAY($1); } /* No count but check consistency with previous */ %typemap(in) PLINT *ArrayCk (int temp) { - $1 = (PLINT*)SWIG_get_int_num_array_var(L, $input, &temp); + $1 = (PLINT*)LUA_get_int_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp != Alen) { lua_pushfstring(L, "Tables must be of same length."); SWIG_fail; } } -%typemap(freearg) PLINT *ArrayCk { SWIG_FREE_ARRAY($1); } +%typemap(freearg) PLINT *ArrayCk { LUA_FREE_ARRAY($1); } /* Weird case to allow argument to be one shorter than others */ %typemap(in) PLINT *ArrayCkMinus1 (int temp) { - $1 = (PLINT*)SWIG_get_int_num_array_var(L, $input, &temp); + $1 = (PLINT*)LUA_get_int_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp < Alen-1) { lua_pushfstring(L, "Tables must be at least length of others minus 1."); SWIG_fail; } } -%typemap(freearg) PLINT *ArrayCkMinus1 { SWIG_FREE_ARRAY($1); } +%typemap(freearg) PLINT *ArrayCkMinus1 { LUA_FREE_ARRAY($1); } %typemap(in) PLINT *ArrayCkMinus1Null (int temp) { - $1 = (PLINT*)SWIG_get_int_num_array_var(L, $input, &temp); + $1 = (PLINT*)LUA_get_int_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp < Alen-1) { lua_pushfstring(L, "Tables must be at least length of others minus 1."); SWIG_fail; } } -%typemap(freearg) PLINT *ArrayCkMinus1Null { SWIG_FREE_ARRAY($1); } +%typemap(freearg) PLINT *ArrayCkMinus1Null { LUA_FREE_ARRAY($1); } /* No length but remember size to check others */ %typemap(in) PLINT *Array (int temp) { - $1 = (PLINT*)SWIG_get_int_num_array_var(L, $input, &temp); + $1 = (PLINT*)LUA_get_int_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; Alen = temp; } -%typemap(freearg) (PLINT *Array) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLINT *Array) { LUA_FREE_ARRAY($1); } /****************************************************************************** @@ -149,17 +198,17 @@ /* with preceding count */ %typemap(in) (PLINT n, PLFLT *Array) { int temp; - $2 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $2 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$2) SWIG_fail; $1 = Alen = temp; } -%typemap(freearg) (PLINT n, PLFLT *Array) { SWIG_FREE_ARRAY($2); } +%typemap(freearg) (PLINT n, PLFLT *Array) { LUA_FREE_ARRAY($2); } /* Trailing count and check consistency with previous */ %typemap(in) (PLFLT *ArrayCk, PLINT n) { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp != Alen) { lua_pushfstring(L, "Tables must be of same length."); @@ -167,105 +216,105 @@ } $2 = temp; } -%typemap(freearg) (PLFLT *ArrayCk, PLINT n) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLFLT *ArrayCk, PLINT n) { LUA_FREE_ARRAY($1); } /* no count, but check consistency with previous */ %typemap(in) PLFLT *ArrayCk (int temp) { - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp != Alen) { lua_pushfstring(L, "Tables must be of same length."); SWIG_fail; } } -%typemap(freearg) PLFLT *ArrayCk { SWIG_FREE_ARRAY($1); } +%typemap(freearg) PLFLT *ArrayCk { LUA_FREE_ARRAY($1); } /* No length but remember size to check others */ %typemap(in) PLFLT *Array { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; Alen = temp; } -%typemap(freearg) (PLFLT *Array) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLFLT *Array) { LUA_FREE_ARRAY($1); } /* with trailing count */ %typemap(in) (PLFLT *Array, PLINT n) { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; $2 = Alen = temp; } -%typemap(freearg) (PLFLT *Array, PLINT n) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLFLT *Array, PLINT n) { LUA_FREE_ARRAY($1); } /* check consistency with X dimension of previous */ %typemap(in) PLFLT *ArrayCkX { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp != Xlen) { lua_pushfstring(L, "Tables must be of same length."); SWIG_fail; } } -%typemap(freearg) PLFLT *ArrayCkX { SWIG_FREE_ARRAY($1); } +%typemap(freearg) PLFLT *ArrayCkX { LUA_FREE_ARRAY($1); } /* check consistency with Y dimension of previous */ %typemap(in) PLFLT *ArrayCkY { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; if(temp != Ylen) { lua_pushfstring(L, "Tables must be of same length."); SWIG_fail; } } -%typemap(freearg) PLFLT *ArrayCkY { SWIG_FREE_ARRAY($1); } +%typemap(freearg) PLFLT *ArrayCkY { LUA_FREE_ARRAY($1); } /* set X length for later consistency checking, with trailing count */ %typemap(in) (PLFLT *ArrayX, PLINT nx) { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; $2 = Xlen = temp; } -%typemap(freearg) (PLFLT *ArrayX, PLINT nx) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLFLT *ArrayX, PLINT nx) { LUA_FREE_ARRAY($1); } /* set X length for later consistency checking */ %typemap(in) PLFLT *ArrayX { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; Xlen = temp; } -%typemap(freearg) PLFLT *ArrayX { SWIG_FREE_ARRAY($1); } +%typemap(freearg) PLFLT *ArrayX { LUA_FREE_ARRAY($1); } /* Set Y length for later consistency checking, with trailing count */ %typemap(in) (PLFLT *ArrayY, PLINT ny) { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; $2 = Ylen = temp; } -%typemap(freearg) (PLFLT *ArrayY, PLINT ny) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLFLT *ArrayY, PLINT ny) { LUA_FREE_ARRAY($1); } /* set Y length for later consistency checking */ %typemap(in) PLFLT *ArrayY { int temp; - $1 = (PLFLT*)SWIG_get_double_num_array_var(L, $input, &temp); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; Ylen = temp; } -%typemap(freearg) (PLFLT *ArrayY) { SWIG_FREE_ARRAY($1); } +%typemap(freearg) (PLFLT *ArrayY) { LUA_FREE_ARRAY($1); } %{ @@ -274,6 +323,9 @@ int i, j; PLFLT** matrix; + *nx=0; + *ny=0; + if (!lua_istable(L, index)) { lua_pushstring(L,"expected a table"); return NULL; @@ -283,15 +335,21 @@ lua_pushstring(L,"table appears to be empty"); return NULL; } - matrix=SWIG_ALLOC_ARRAY(PLFLT*,*nx); + matrix=LUA_ALLOC_ARRAY(PLFLT*,*nx); for (i = 0; i < *nx; i++) matrix[i] = NULL; lua_rawgeti(L, index, 1); - *ny=SWIG_itable_size(L,-1); + if (!lua_istable(L, -1)) { + lua_pop(L, 1); + lua_pushstring(L, "expected a table"); + LUA_FREE_ARRAY(matrix); + return NULL; + } + *ny=SWIG_itable_size(L, -1); if (*ny<1) { lua_pushstring(L,"table appears to be empty"); - SWIG_FREE_ARRAY(matrix); + LUA_FREE_ARRAY(matrix); return NULL; } lua_pop(L,1); @@ -302,19 +360,19 @@ lua_pop(L,1); lua_pushstring(L,"expected a table"); for (j = 0; j < *ny; j++) - SWIG_FREE_ARRAY(matrix[j]); - SWIG_FREE_ARRAY(matrix); + LUA_FREE_ARRAY(matrix[j]); + LUA_FREE_ARRAY(matrix); return NULL; } if (*ny!=SWIG_itable_size(L,-1)) { lua_pop(L,1); lua_pushstring(L,"inconsistent table sizes"); for (j = 0; j < *ny; j++) - SWIG_FREE_ARRAY(matrix[j]); - SWIG_FREE_ARRAY(matrix); + LUA_FREE_ARRAY(matrix[j]); + LUA_FREE_ARRAY(matrix); return NULL; } - matrix[i]=SWIG_ALLOC_ARRAY(PLFLT, *ny); + matrix[i]=LUA_ALLOC_ARRAY(PLFLT, *ny); for (j = 0; j < *ny; j++) { lua_rawgeti(L, -1, j+1); if(lua_isnumber(L,-1)) { @@ -323,8 +381,8 @@ lua_pop(L,1); lua_pushstring(L,"table must contain numbers"); for (j = 0; j < *ny; j++) - SWIG_FREE_ARRAY(matrix[j]); - SWIG_FREE_ARRAY(matrix); + LUA_FREE_ARRAY(matrix[j]); + LUA_FREE_ARRAY(matrix); return NULL; } lua_pop(L,1); @@ -353,9 +411,11 @@ %typemap(freearg) (PLFLT **MatrixCk, PLINT nx, PLINT ny) { int i; - for (i = 0; i < ii$argnum; i++) - SWIG_FREE_ARRAY($1[i]); - SWIG_FREE_ARRAY($1); + if($1) { + for (i = 0; i < ii$argnum; i++) + LUA_FREE_ARRAY($1[i]); + LUA_FREE_ARRAY($1); + } } @@ -371,9 +431,11 @@ %typemap(freearg) (PLFLT **Matrix, PLINT nx, PLINT ny) { int i; - for (i = 0; i < ii$argnum; i++) - SWIG_FREE_ARRAY($1[i]); - SWIG_FREE_ARRAY($1); + if($1) { + for (i = 0; i < ii$argnum; i++) + LUA_FREE_ARRAY($1[i]); + LUA_FREE_ARRAY($1); + } } @@ -389,9 +451,11 @@ %typemap(freearg) PLFLT **Matrix { int i; - for (i = 0; i < ii$argnum; i++) - SWIG_FREE_ARRAY($1[i]); - SWIG_FREE_ARRAY($1); + if($1) { + for (i = 0; i < ii$argnum; i++) + LUA_FREE_ARRAY($1[i]); + LUA_FREE_ARRAY($1); + } } @@ -416,9 +480,11 @@ %typemap(freearg) PLFLT **MatrixCk { int i; - for (i = 0; i < ii$argnum; i++) - SWIG_FREE_ARRAY($1[i]); - SWIG_FREE_ARRAY($1); + if($1) { + for (i = 0; i < ii$argnum; i++) + LUA_FREE_ARRAY($1[i]); + LUA_FREE_ARRAY($1); + } } @@ -436,9 +502,11 @@ %typemap(freearg) PLFLT **OutMatrixCk { int i; - for (i = 0; i < ii$argnum; i++) - SWIG_FREE_ARRAY($1[i]); - SWIG_FREE_ARRAY($1); + if($1) { + for (i = 0; i < ii$argnum; i++) + LUA_FREE_ARRAY($1[i]); + LUA_FREE_ARRAY($1); + } } @@ -513,7 +581,7 @@ n=n+1; /* since lua only counts the options */ $1 = &n; - $2 = SWIG_ALLOC_ARRAY(char*, (n+1)); + $2 = LUA_ALLOC_ARRAY(char*, (n+1)); for(i = 0; i < n; i++) { lua_rawgeti(L, $input, i); @@ -530,7 +598,7 @@ $2[n] = NULL; } %typemap(freearg) (int *p_argc, const char **argv) { - SWIG_FREE_ARRAY($2); + LUA_FREE_ARRAY($2); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-27 08:39:17
|
Revision: 9408 http://plplot.svn.sourceforge.net/plplot/?rev=9408&view=rev Author: smekal Date: 2009-01-27 08:39:08 +0000 (Tue, 27 Jan 2009) Log Message: ----------- Renamed plend1 to plend1 (was end1) to be consistent with pl.plend. Added support for string returning functions. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-01-27 08:37:04 UTC (rev 9407) +++ trunk/bindings/lua/plplotluac.i 2009-01-27 08:39:08 UTC (rev 9408) @@ -520,10 +520,10 @@ %typemap(in, numinputs=0) char *OUTPUT ( char buff[1000] ) { $1 = buff; } -/*%typemap(argout,fragment="t_output_helper") char *OUTPUT { - PyObject *o = PyString_FromString($1); - $result = t_output_helper($result,o); -}*/ +%typemap(argout) char *OUTPUT { + lua_pushstring(L, $1); + SWIG_arg++; +} /****************************************************************************** @@ -628,7 +628,7 @@ %rename(cont) plcont; %rename(cpstrm) plcpstrm; %rename(plend) plend; -%rename(end1) plend1; +%rename(plend1) plend1; %rename(env) plenv; %rename(env0) plenv0; %rename(eop) pleop; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-28 20:35:47
|
Revision: 9412 http://plplot.svn.sourceforge.net/plplot/?rev=9412&view=rev Author: smekal Date: 2009-01-28 20:35:44 +0000 (Wed, 28 Jan 2009) Log Message: ----------- Added function setcontlabelformat and setcontlabelpara. Working on cgrid parameters (not finished). Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-01-28 20:34:17 UTC (rev 9411) +++ trunk/bindings/lua/plplotluac.i 2009-01-28 20:35:44 UTC (rev 9412) @@ -566,6 +566,82 @@ $1 = plfill; } +/* you can omit the pltr func */ +%typemap(default) pltr_func pltr { + $1 = NULL; +} + + + +//~ %typemap(in) PLPointer OBJECT_DATA { + //~ lua_pushstring(L, "n"); + //~ lua_gettable(L, $input); + //~ if(!lua_isnumber(L, -1)) { + //~ lua_pushfstring(L, "Table doesn't contain key 'n'."); + //~ SWIG_fail; + //~ } + //~ n = (int)lua_tonumber(L, -1); + //~ lua_pop(L, 1); /* remove number */ + + + //~ jPLFLT **adat; + //~ jobject *ai; + //~ int nx = (*jenv)->GetArrayLength( jenv, $input ); + //~ int ny = -1; + //~ int i, j; + //~ PLcGrid2 cgrid; + //~ ai = (jobject *) malloc( nx * sizeof(jobject) ); + //~ adat = (jPLFLT **) malloc( nx * sizeof(jPLFLT *) ); + + //~ (*jenv)->EnsureLocalCapacity( jenv, nx ); + + //~ for( i=0; i < nx; i++ ) + //~ { + //~ ai[i] = (*jenv)->GetObjectArrayElement( jenv, $input, i ); + //~ adat[i] = (*jenv)->GetPLFLTArrayElements( jenv, ai[i], 0 ); + + //~ if (ny == -1) + //~ ny = (*jenv)->GetArrayLength( jenv, ai[i] ); + //~ else if (ny != (*jenv)->GetArrayLength( jenv, ai[i] )) { + //~ printf( "Misshapen a array.\n" ); + //~ for( j=0; j <= i; j++ ) + //~ (*jenv)->ReleasePLFLTArrayElements( jenv, ai[j], adat[j], 0 ); + //~ free(adat); + //~ free(ai); + //~ return; + //~ } + //~ } + + //~ if( !((nx == Xlen && ny == Ylen) || (nx == Ylen && ny == 1 && ny == Alen))) { + //~ printf( "Xlen = %d, nx = %d, Ylen = %d, Alen = %d, ny = %d\n", + //~ Xlen, nx, Ylen, Alen, ny ); + //~ printf( "Y vector or matrix must match matrix dimensions.\n" ); + //~ for( i=0; i < nx; i++ ) + //~ (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); + //~ free(adat); + //~ free(ai); + //~ return; + //~ } + //~ setup_array_2d_PLFLT( &yg, adat, nx, ny ); + //~ for( i=0; i < nx; i++ ) { + //~ (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); + //~ (*jenv)->DeleteLocalRef(jenv, ai[i]); + //~ } + + //~ free(adat); + //~ free(ai); + //~ cgrid.xg = xg; + //~ cgrid.yg = yg; + //~ cgrid.nx = nx; + //~ cgrid.ny = ny; + //~ $1 = &cgrid; +//~ } +//~ %typemap(freearg) PLPointer OBJECT_DATA { + //~ free(yg[0]); + //~ free(yg); +//~ } */ + + /* Process options list using current options info. */ %typemap(in, checkfn="lua_istable") (int *p_argc, const char **argv) { int i, n; @@ -615,6 +691,8 @@ Renames ******************************************************************************/ %rename(parseopts) plparseopts; +%rename(setcontlabelformat) pl_setcontlabelformat; +%rename(setcontlabelparam) pl_setcontlabelparam; %rename(adv) pladv; %rename(axes) plaxes; %rename(bin) plbin; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-01-30 10:18:54
|
Revision: 9418 http://plplot.svn.sourceforge.net/plplot/?rev=9418&view=rev Author: smekal Date: 2009-01-30 10:18:44 +0000 (Fri, 30 Jan 2009) Log Message: ----------- Working on the implementation of the PLcGrid parameter (example 9, 16, 22). Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-01-30 10:08:22 UTC (rev 9417) +++ trunk/bindings/lua/plplotluac.i 2009-01-30 10:18:44 UTC (rev 9418) @@ -556,7 +556,7 @@ typedef void (*pltr_func)(PLFLT, PLFLT, PLFLT *, PLFLT*, PLPointer); typedef void (*mapform_func)(PLINT, PLFLT *, PLFLT*); typedef PLFLT (*f2eval_func)(PLINT, PLINT, PLPointer); -%} +%} %typemap(in, numinputs=0) defined_func df { $1 = NULL; @@ -566,80 +566,193 @@ $1 = plfill; } + +%typemap(in) pltr_func pltr { + $1 = NULL; + + if(lua_isstring(L, $input)) { + const char* funcstr = lua_tostring(L, $input); + if(strcmp("pltr0", funcstr)==0) { + $1 = pltr0; + } else if(strcmp("pltr1", funcstr)==0) { + $1 = pltr1; + } else if(strcmp("pltr2", funcstr)==0) { + $1 = pltr2; + } else { + lua_pushfstring(L, "Unknown pltr function: %s", funcstr); + SWIG_fail; + } + } else if(lua_isfunction(L, $input)) { + lua_pushfstring(L, "Lua pltr function not supported right now."); + SWIG_fail; + } else + SWIG_fail_arg("$symname", $argnum, "$1_type") +} +%typemap(freearg) pltr_func pltr { +} /* you can omit the pltr func */ %typemap(default) pltr_func pltr { $1 = NULL; } +%typemap(in) PLPointer OBJECT_DATA (PLcGrid cgrid1, PLcGrid2 cgrid2, int gridmode) { + int nx, ny; + gridmode=0; + cgrid1.xg=NULL; + cgrid1.yg=NULL; + + lua_pushstring(L, "nx"); + lua_gettable(L, $input); + if(!lua_isnumber(L, -1)) { + lua_pop(L, 1); /* remove number nx */ + lua_pushfstring(L, "Table doesn't contain a key 'nx'."); + SWIG_fail; + } + nx = (int)lua_tonumber(L, -1); + lua_pop(L, 1); /* remove number nx */ -//~ %typemap(in) PLPointer OBJECT_DATA { - //~ lua_pushstring(L, "n"); - //~ lua_gettable(L, $input); - //~ if(!lua_isnumber(L, -1)) { - //~ lua_pushfstring(L, "Table doesn't contain key 'n'."); - //~ SWIG_fail; - //~ } - //~ n = (int)lua_tonumber(L, -1); - //~ lua_pop(L, 1); /* remove number */ + lua_pushstring(L, "ny"); + lua_gettable(L, $input); + if(!lua_isnumber(L, -1)) { + lua_pop(L, 1); /* remove number ny */ + lua_pushfstring(L, "Table doesn't contain a key 'ny'."); + SWIG_fail; + } + ny = (int)lua_tonumber(L, -1); + lua_pop(L, 1); /* remove number */ + + printf("nx=%d, ny=%d\n", nx, ny); + lua_pushstring(L, "xg"); + lua_gettable(L, $input); + if (!lua_istable(L, -1)) { + lua_pop(L, 1); /* pop "xg" */ + lua_pushstring(L, "expected a table xg"); + SWIG_fail; + } + printf("lua type=%s\n", lua_typename(L, lua_type(L, -1))); + lua_pushstring(L, "1"); + lua_gettable(L, -2); + printf("lua type=%s\n", lua_typename(L, lua_type(L, -1))); + if (lua_istable(L, -1)) + gridmode=2; /* two dimensional array*/ + else if (lua_isnumber(L, -1)) + gridmode=1; /* one dimensional array*/ + else { + lua_pop(L, 1); /* pop "1" */ + lua_pop(L, 1); /* pop "xg" */ + lua_pushstring(L, "expected a one or two dimensional array/table in xg"); + SWIG_fail; + } + lua_pop(L, 1); /* pop "1" */ + if(gridmode==1) { + int temp; + cgrid1.xg = (PLFLT*)LUA_get_double_num_array_var(L, -1, &temp); + if(cgrid1.xg) SWIG_fail; + if(nx!=temp) { + lua_pushfstring(L, "Table xg must be of length nx=%d.", nx); + SWIG_fail; + } + cgrid1.nx = nx; + } else { + } + lua_pop(L, 1); /* pop "xg" */ - //~ jPLFLT **adat; - //~ jobject *ai; - //~ int nx = (*jenv)->GetArrayLength( jenv, $input ); - //~ int ny = -1; - //~ int i, j; - //~ PLcGrid2 cgrid; - //~ ai = (jobject *) malloc( nx * sizeof(jobject) ); - //~ adat = (jPLFLT **) malloc( nx * sizeof(jPLFLT *) ); + lua_pushstring(L, "yg"); + lua_gettable(L, $input); + if (!lua_istable(L, -1)) { + lua_pop(L, 1); + lua_pushstring(L, "expected a table yg"); + SWIG_fail; + } + lua_pushstring(L, "1"); + lua_gettable(L, -2); + if(gridmode=2) { + if (!lua_istable(L, -1)) { + lua_pop(L, 1); /* pop "1" */ + lua_pop(L, 1); /* pop "yg" */ + lua_pushstring(L, "expected a two dimensional array/table in yg"); + SWIG_fail; + } + } else { + if (!lua_isnumber(L, -1)) { + lua_pop(L, 1); /* pop "1" */ + lua_pop(L, 1); /* pop "yg" */ + lua_pushstring(L, "expected a one dimensional array/table in yg"); + SWIG_fail; + } + } + lua_pop(L, 1); /* pop "1" */ + if(gridmode==1) { + int temp; + cgrid1.yg = (PLFLT*)LUA_get_double_num_array_var(L, -1, &temp); + if(cgrid1.yg) SWIG_fail; + if(ny!=temp) { + lua_pushfstring(L, "Table yg must be of length ny=%d.", ny); + SWIG_fail; + } + cgrid1.ny = ny; + } else { + } + lua_pop(L, 1); /* pop "yg" */ - //~ (*jenv)->EnsureLocalCapacity( jenv, nx ); + + /* jPLFLT **adat; + jobject *ai; + int nx = (*jenv)->GetArrayLength( jenv, $input ); + int ny = -1; + int i, j; + ai = (jobject *) malloc( nx * sizeof(jobject) ); + adat = (jPLFLT **) malloc( nx * sizeof(jPLFLT *) ); - //~ for( i=0; i < nx; i++ ) - //~ { - //~ ai[i] = (*jenv)->GetObjectArrayElement( jenv, $input, i ); - //~ adat[i] = (*jenv)->GetPLFLTArrayElements( jenv, ai[i], 0 ); + (*jenv)->EnsureLocalCapacity( jenv, nx ); - //~ if (ny == -1) - //~ ny = (*jenv)->GetArrayLength( jenv, ai[i] ); - //~ else if (ny != (*jenv)->GetArrayLength( jenv, ai[i] )) { - //~ printf( "Misshapen a array.\n" ); - //~ for( j=0; j <= i; j++ ) - //~ (*jenv)->ReleasePLFLTArrayElements( jenv, ai[j], adat[j], 0 ); - //~ free(adat); - //~ free(ai); - //~ return; - //~ } - //~ } + for( i=0; i < nx; i++ ) + { + ai[i] = (*jenv)->GetObjectArrayElement( jenv, $input, i ); + adat[i] = (*jenv)->GetPLFLTArrayElements( jenv, ai[i], 0 ); - //~ if( !((nx == Xlen && ny == Ylen) || (nx == Ylen && ny == 1 && ny == Alen))) { - //~ printf( "Xlen = %d, nx = %d, Ylen = %d, Alen = %d, ny = %d\n", - //~ Xlen, nx, Ylen, Alen, ny ); - //~ printf( "Y vector or matrix must match matrix dimensions.\n" ); - //~ for( i=0; i < nx; i++ ) - //~ (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); - //~ free(adat); - //~ free(ai); - //~ return; - //~ } - //~ setup_array_2d_PLFLT( &yg, adat, nx, ny ); - //~ for( i=0; i < nx; i++ ) { - //~ (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); - //~ (*jenv)->DeleteLocalRef(jenv, ai[i]); - //~ } + if (ny == -1) + ny = (*jenv)->GetArrayLength( jenv, ai[i] ); + else if (ny != (*jenv)->GetArrayLength( jenv, ai[i] )) { + printf( "Misshapen a array.\n" ); + for( j=0; j <= i; j++ ) + (*jenv)->ReleasePLFLTArrayElements( jenv, ai[j], adat[j], 0 ); + free(adat); + free(ai); + return; + } + } - //~ free(adat); - //~ free(ai); - //~ cgrid.xg = xg; - //~ cgrid.yg = yg; - //~ cgrid.nx = nx; - //~ cgrid.ny = ny; - //~ $1 = &cgrid; -//~ } -//~ %typemap(freearg) PLPointer OBJECT_DATA { - //~ free(yg[0]); - //~ free(yg); -//~ } */ + if( !((nx == Xlen && ny == Ylen) || (nx == Ylen && ny == 1 && ny == Alen))) { + printf( "Xlen = %d, nx = %d, Ylen = %d, Alen = %d, ny = %d\n", + Xlen, nx, Ylen, Alen, ny ); + printf( "Y vector or matrix must match matrix dimensions.\n" ); + for( i=0; i < nx; i++ ) + (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); + free(adat); + free(ai); + return; + } + setup_array_2d_PLFLT( &yg, adat, nx, ny ); + for( i=0; i < nx; i++ ) { + (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); + (*jenv)->DeleteLocalRef(jenv, ai[i]); + } + $1 = &cgrid; */ + if(gridmode==1) + $1 = &cgrid1; + else if(gridmode==2) + $1 = &cgrid2; +} +%typemap(freearg) PLPointer OBJECT_DATA (PLcGrid cgrid1, PLcGrid2 cgrid2, int gridmode) { + if(gridmode==1) { + LUA_FREE_ARRAY(cgrid1.xg); + LUA_FREE_ARRAY(cgrid1.yg); + } else { + } +} /* Process options list using current options info. */ @@ -685,7 +798,6 @@ %ignore plfcont; %ignore plfshade; %ignore plimagefr; -%ignore plcont; /****************************************************************************** Renames This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-02-01 00:17:26
|
Revision: 9420 http://plplot.svn.sourceforge.net/plplot/?rev=9420&view=rev Author: airwin Date: 2009-02-01 00:17:21 +0000 (Sun, 01 Feb 2009) Log Message: ----------- Fix Linux build error caused by inconsistent declaration and definition of SWIG_itable_size. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-01-31 23:02:40 UTC (rev 9419) +++ trunk/bindings/lua/plplotluac.i 2009-02-01 00:17:21 UTC (rev 9420) @@ -44,7 +44,7 @@ #define LUA_FREE_ARRAY(PTR) if(PTR) {free(PTR); PTR=NULL;} /* super macro to declare array typemap helper fns */ -int SWIG_itable_size(lua_State* L, int index); +SWIGINTERN int SWIG_itable_size(lua_State* L, int index); #define LUA_DECLARE_TYPEMAP_ARR_FN(NAME,TYPE)\ SWIGINTERN int LUA_read_##NAME##_num_array(lua_State* L,int index,TYPE *array,int size){\ int i;\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-09 23:22:21
|
Revision: 9483 http://plplot.svn.sourceforge.net/plplot/?rev=9483&view=rev Author: smekal Date: 2009-02-09 21:32:31 +0000 (Mon, 09 Feb 2009) Log Message: ----------- >From lua 5.1 on there is no element "n" in the table arg anymore, so we need to find out the number of command line options manually (should also work for lua 5.0). Added the typemap for legline[4] needed for example 17. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-02-09 21:30:45 UTC (rev 9482) +++ trunk/bindings/lua/plplotluac.i 2009-02-09 21:32:31 UTC (rev 9483) @@ -755,19 +755,59 @@ } +/* this typemap takes a sequence of strings and converts them for plstripc + also checks that previous Arrays were of length 4 +*/ +%typemap(in, checkfn="lua_istable") char *legline[4] { + int i; + $1=NULL; + + if(SWIG_table_size(L, $input)!=4) { + lua_pushfstring(L, "Requires a sequence of 4 strings."); + SWIG_fail; + } + if(Alen!=4) { + lua_pushfstring(L, "colline and styline args must be length 4."); + SWIG_fail; + } + + $1 = malloc(sizeof(char*)*4); + for(i = 1; i <= 4; i++) { + lua_rawgeti(L, $input, i); + if(lua_isstring(L, -1)) { + $1[i-1] = (char*)lua_tostring(L, -1); + } else { + lua_pop(L,1); + lua_pushfstring(L, "Requires a sequence of 4 strings."); + SWIG_fail; + /* $1 array is freed after 'fail:' */ + } + lua_pop(L,1); + } +} +%typemap(freearg) char *legline[4] { + if($1) {free($1); $1=NULL;} +} + + /* Process options list using current options info. */ %typemap(in, checkfn="lua_istable") (int *p_argc, const char **argv) { int i, n; - lua_pushstring(L, "n"); - lua_gettable(L, $input); - if(!lua_isnumber(L, -1)) { - lua_pushfstring(L, "Table doesn't contain key 'n'."); - SWIG_fail; + /* from lua 5.1 on there is no element "n" anymore, + so we need to find out the number of command line + options manually */ + for(i = 1; ; i++) { + lua_rawgeti(L, $input, i); + if(lua_isnil(L, -1)) { + /* ok, this index doesn't exist anymore, we have i-1 + command line options */ + lua_pop(L, 1); + break; + } } - n = (int)lua_tonumber(L, -1); - lua_pop(L, 1); /* remove number */ - n=n+1; /* since lua only counts the options */ + n=i; + printf("number of options=%d\n", n); $1 = &n; $2 = LUA_ALLOC_ARRAY(char*, (n+1)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-10 08:21:01
|
Revision: 9494 http://plplot.svn.sourceforge.net/plplot/?rev=9494&view=rev Author: smekal Date: 2009-02-10 08:20:59 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Removed debug message. Fixed wrong rename for plcalc_world. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-02-10 08:19:59 UTC (rev 9493) +++ trunk/bindings/lua/plplotluac.i 2009-02-10 08:20:59 UTC (rev 9494) @@ -807,7 +807,6 @@ } } n=i; - printf("number of options=%d\n", n); $1 = &n; $2 = LUA_ALLOC_ARRAY(char*, (n+1)); @@ -851,7 +850,7 @@ %rename(bop) plbop; %rename(box) plbox; %rename(box3) plbox3; -%rename(calworld) plcalworld; +%rename(calc_world) plcalc_world; %rename(clear) plclear; %rename(col0) plcol0; %rename(col1) plcol1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-11 21:06:18
|
Revision: 9511 http://plplot.svn.sourceforge.net/plplot/?rev=9511&view=rev Author: smekal Date: 2009-02-11 21:06:08 +0000 (Wed, 11 Feb 2009) Log Message: ----------- Removed ignore directives. Removed parts regarding deprecated function plshade1. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-02-11 21:05:00 UTC (rev 9510) +++ trunk/bindings/lua/plplotluac.i 2009-02-11 21:06:08 UTC (rev 9511) @@ -459,13 +459,6 @@ } -/* for plshade1, note the difference in the type for the first arg */ -%typemap(in) (PLFLT *Matrix, PLINT nx, PLINT ny) (int ii) { -} -%typemap(freearg) (PLFLT *Matrix, PLINT nx, PLINT ny) { -} - - /* 2D array, check for consistency */ %typemap(in) PLFLT **MatrixCk (int ii) { int jj; @@ -830,14 +823,6 @@ } -%ignore plshades; -%ignore plshade; -%ignore plshade1; -%ignore plvect; -%ignore plfcont; -%ignore plfshade; -%ignore plimagefr; - /****************************************************************************** Renames ******************************************************************************/ @@ -960,7 +945,6 @@ %rename(sfnam) plsfnam; %rename(sfont) plsfont; %rename(shade) plshade; -%rename(shade1) plshade1; %rename(shades) plshades; %rename(smaj) plsmaj; %rename(smem) plsmem; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-12 20:45:43
|
Revision: 9516 http://plplot.svn.sourceforge.net/plplot/?rev=9516&view=rev Author: smekal Date: 2009-02-12 20:45:32 +0000 (Thu, 12 Feb 2009) Log Message: ----------- Bug fix where unallocated memory was freed. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-02-12 20:44:18 UTC (rev 9515) +++ trunk/bindings/lua/plplotluac.i 2009-02-12 20:45:32 UTC (rev 9516) @@ -367,7 +367,7 @@ if (*ny!=SWIG_itable_size(L,-1)) { lua_pop(L,1); lua_pushstring(L,"inconsistent table sizes"); - for (j = 0; j < *ny; j++) + for (j = 0; j < i; j++) LUA_FREE_ARRAY(matrix[j]); LUA_FREE_ARRAY(matrix); return NULL; @@ -380,7 +380,7 @@ } else { lua_pop(L,1); lua_pushstring(L,"table must contain numbers"); - for (j = 0; j < *ny; j++) + for (j = 0; j < i+1; j++) LUA_FREE_ARRAY(matrix[j]); LUA_FREE_ARRAY(matrix); return NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-13 23:22:18
|
Revision: 9525 http://plplot.svn.sourceforge.net/plplot/?rev=9525&view=rev Author: smekal Date: 2009-02-13 21:58:51 +0000 (Fri, 13 Feb 2009) Log Message: ----------- Improved Lua bindings. Functions which use the pltr function and PLcGrid parameter work now. Some other minor improvements. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-02-13 20:14:00 UTC (rev 9524) +++ trunk/bindings/lua/plplotluac.i 2009-02-13 21:58:51 UTC (rev 9525) @@ -559,7 +559,6 @@ $1 = plfill; } - %typemap(in) pltr_func pltr { $1 = NULL; @@ -581,42 +580,23 @@ } else SWIG_fail_arg("$symname", $argnum, "$1_type") } -%typemap(freearg) pltr_func pltr { -} /* you can omit the pltr func */ %typemap(default) pltr_func pltr { $1 = NULL; } +%apply pltr_func pltr { pltr_func pltr_img }; -%typemap(in) PLPointer OBJECT_DATA (PLcGrid cgrid1, PLcGrid2 cgrid2, int gridmode) { +%typemap(arginit) PLPointer OBJECT_DATA { + cgrid1$argnum.xg = cgrid1$argnum.yg = cgrid1$argnum.zg = NULL; + cgrid1$argnum.nx = cgrid1$argnum.ny = cgrid1$argnum.nz = 0; + cgrid2$argnum.xg = cgrid2$argnum.yg = cgrid2$argnum.zg = NULL; + cgrid2$argnum.nx = cgrid2$argnum.ny = 0; +} +%typemap(in) PLPointer OBJECT_DATA (PLcGrid cgrid1, PLcGrid2 cgrid2) { int nx, ny; - gridmode=0; - cgrid1.xg=NULL; - cgrid1.yg=NULL; + int gridmode=0; - lua_pushstring(L, "nx"); - lua_gettable(L, $input); - if(!lua_isnumber(L, -1)) { - lua_pop(L, 1); /* remove number nx */ - lua_pushfstring(L, "Table doesn't contain a key 'nx'."); - SWIG_fail; - } - nx = (int)lua_tonumber(L, -1); - lua_pop(L, 1); /* remove number nx */ - - lua_pushstring(L, "ny"); - lua_gettable(L, $input); - if(!lua_isnumber(L, -1)) { - lua_pop(L, 1); /* remove number ny */ - lua_pushfstring(L, "Table doesn't contain a key 'ny'."); - SWIG_fail; - } - ny = (int)lua_tonumber(L, -1); - lua_pop(L, 1); /* remove number */ - - printf("nx=%d, ny=%d\n", nx, ny); - lua_pushstring(L, "xg"); lua_gettable(L, $input); if (!lua_istable(L, -1)) { @@ -624,10 +604,7 @@ lua_pushstring(L, "expected a table xg"); SWIG_fail; } - printf("lua type=%s\n", lua_typename(L, lua_type(L, -1))); - lua_pushstring(L, "1"); - lua_gettable(L, -2); - printf("lua type=%s\n", lua_typename(L, lua_type(L, -1))); + lua_rawgeti(L, -1, 1); if (lua_istable(L, -1)) gridmode=2; /* two dimensional array*/ else if (lua_isnumber(L, -1)) @@ -638,17 +615,31 @@ lua_pushstring(L, "expected a one or two dimensional array/table in xg"); SWIG_fail; } - lua_pop(L, 1); /* pop "1" */ + lua_pop(L, 1); /* pop test element */ if(gridmode==1) { - int temp; - cgrid1.xg = (PLFLT*)LUA_get_double_num_array_var(L, -1, &temp); - if(cgrid1.xg) SWIG_fail; - if(nx!=temp) { - lua_pushfstring(L, "Table xg must be of length nx=%d.", nx); + cgrid1.xg = (PLFLT*)LUA_get_double_num_array_var(L, -1, &nx); + if(!cgrid1.xg) { + lua_pop(L, 1); /* pop "xg" */ SWIG_fail; } + if(nx!=Xlen) { + lua_pushfstring(L, "Table xg must be of length %d.", Xlen); + SWIG_fail; + } cgrid1.nx = nx; } else { + cgrid2.xg = read_double_Matrix(L, -1, &nx, &ny ); + if(!cgrid2.xg) { + lua_pop(L, 1); /* pop "xg" */ + SWIG_fail; + } + if( (nx!=Xlen) || (ny!=Ylen) ) { + lua_pop(L, 1); /* pop "xg" */ + lua_pushfstring(L, "Vectors must match matrix."); + SWIG_fail; + } + cgrid2.nx = nx; + cgrid2.ny = ny; } lua_pop(L, 1); /* pop "xg" */ @@ -659,9 +650,8 @@ lua_pushstring(L, "expected a table yg"); SWIG_fail; } - lua_pushstring(L, "1"); - lua_gettable(L, -2); - if(gridmode=2) { + lua_rawgeti(L, -1, 1); + if(gridmode==2) { if (!lua_istable(L, -1)) { lua_pop(L, 1); /* pop "1" */ lua_pop(L, 1); /* pop "yg" */ @@ -678,76 +668,59 @@ } lua_pop(L, 1); /* pop "1" */ if(gridmode==1) { - int temp; - cgrid1.yg = (PLFLT*)LUA_get_double_num_array_var(L, -1, &temp); - if(cgrid1.yg) SWIG_fail; - if(ny!=temp) { - lua_pushfstring(L, "Table yg must be of length ny=%d.", ny); + cgrid1.yg = (PLFLT*)LUA_get_double_num_array_var(L, -1, &ny); + if(!cgrid1.yg) { + lua_pop(L, 1); /* pop "yg" */ SWIG_fail; } + if(ny!=Ylen) { + lua_pushfstring(L, "Table yg must be of length %d.", Ylen); + SWIG_fail; + } cgrid1.ny = ny; } else { + cgrid2.yg = read_double_Matrix(L, -1, &nx, &ny ); + if(!cgrid2.yg) { + lua_pop(L, 1); /* pop "xg" */ + SWIG_fail; + } + if( (nx!=Xlen) || (ny!=Ylen) ) { + lua_pop(L, 1); /* pop "xg" */ + lua_pushfstring(L, "Vectors must match matrix."); + SWIG_fail; + } + /* cgrid2.nx/ny already set */ } lua_pop(L, 1); /* pop "yg" */ - - /* jPLFLT **adat; - jobject *ai; - int nx = (*jenv)->GetArrayLength( jenv, $input ); - int ny = -1; - int i, j; - ai = (jobject *) malloc( nx * sizeof(jobject) ); - adat = (jPLFLT **) malloc( nx * sizeof(jPLFLT *) ); - - (*jenv)->EnsureLocalCapacity( jenv, nx ); - - for( i=0; i < nx; i++ ) - { - ai[i] = (*jenv)->GetObjectArrayElement( jenv, $input, i ); - adat[i] = (*jenv)->GetPLFLTArrayElements( jenv, ai[i], 0 ); - - if (ny == -1) - ny = (*jenv)->GetArrayLength( jenv, ai[i] ); - else if (ny != (*jenv)->GetArrayLength( jenv, ai[i] )) { - printf( "Misshapen a array.\n" ); - for( j=0; j <= i; j++ ) - (*jenv)->ReleasePLFLTArrayElements( jenv, ai[j], adat[j], 0 ); - free(adat); - free(ai); - return; - } - } - - if( !((nx == Xlen && ny == Ylen) || (nx == Ylen && ny == 1 && ny == Alen))) { - printf( "Xlen = %d, nx = %d, Ylen = %d, Alen = %d, ny = %d\n", - Xlen, nx, Ylen, Alen, ny ); - printf( "Y vector or matrix must match matrix dimensions.\n" ); - for( i=0; i < nx; i++ ) - (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); - free(adat); - free(ai); - return; - } - setup_array_2d_PLFLT( &yg, adat, nx, ny ); - for( i=0; i < nx; i++ ) { - (*jenv)->ReleasePLFLTArrayElements( jenv, ai[i], adat[i], 0 ); - (*jenv)->DeleteLocalRef(jenv, ai[i]); - } - $1 = &cgrid; */ - if(gridmode==1) - $1 = &cgrid1; - else if(gridmode==2) - $1 = &cgrid2; + if(gridmode==1) + $1 = &cgrid1; + else if(gridmode==2) + $1 = &cgrid2; } -%typemap(freearg) PLPointer OBJECT_DATA (PLcGrid cgrid1, PLcGrid2 cgrid2, int gridmode) { - if(gridmode==1) { - LUA_FREE_ARRAY(cgrid1.xg); - LUA_FREE_ARRAY(cgrid1.yg); - } else { +%typemap(freearg) PLPointer OBJECT_DATA { + int i; + + LUA_FREE_ARRAY(cgrid1$argnum.xg); + LUA_FREE_ARRAY(cgrid1$argnum.yg); + + if(cgrid2$argnum.xg) { + for (i = 0; i<Xlen; i++) + LUA_FREE_ARRAY(cgrid2$argnum.xg[i]); + LUA_FREE_ARRAY(cgrid2$argnum.xg); } + if(cgrid2$argnum.yg) { + for (i = 0; i<Xlen; i++) + LUA_FREE_ARRAY(cgrid2$argnum.yg[i]); + LUA_FREE_ARRAY(cgrid2$argnum.yg); + } } +/* you can omit the data too */ +%typemap(default) PLPointer OBJECT_DATA { + $1 = NULL; +} +%apply PLPointer OBJECT_DATA { PLPointer OBJECT_DATA_img }; - /* this typemap takes a sequence of strings and converts them for plstripc also checks that previous Arrays were of length 4 */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-16 11:21:27
|
Revision: 9529 http://plplot.svn.sourceforge.net/plplot/?rev=9529&view=rev Author: smekal Date: 2009-02-16 11:21:17 +0000 (Mon, 16 Feb 2009) Log Message: ----------- Parameter ArrayCkMinus1Null can now be omitted. Added plwarn and plabort declarations. Added parameter const char* message. Added mapform and pltr callback functions. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-02-15 13:22:06 UTC (rev 9528) +++ trunk/bindings/lua/plplotluac.i 2009-02-16 11:21:17 UTC (rev 9529) @@ -180,6 +180,7 @@ } } %typemap(freearg) PLINT *ArrayCkMinus1Null { LUA_FREE_ARRAY($1); } +%typemap(default) PLINT *ArrayCkMinus1Null { $1=NULL; } /* No length but remember size to check others */ @@ -518,24 +519,73 @@ SWIG_arg++; } +%typemap(in, checkfn="lua_isstring") const char *message { + $1 = (char*)lua_tostring(L, $input); +} + /****************************************************************************** Function calls ******************************************************************************/ -/* lua functions -%include <lua_fnptr.i> +%{ +static lua_State* myL=NULL; +static char mapform_funcstr[255]; -%{ -void mapform_fn(PLINT n, PLFLT* x, PLFLT* y) +void mapform(PLINT n, PLFLT* x, PLFLT* y) { - SWIGLUA_FN_GET(fn); - lua_pushnumber(fn.L, n); - SWIG_write_double_num_array(L, x, n) - SWIG_write_double_num_array(L, y, n) - lua_call(fn.L,3,0); // 2 in, 1 out + PLFLT *xtemp, *ytemp; + int len, i; + + /* check Lua state */ + if(myL==NULL) { + fprintf(stderr, "Lua state is not set!"); + return; + } + + /* push functions and arguments */ + lua_getglobal(myL, mapform_funcstr); /* function to be called */ + lua_pushnumber(myL, n); /* push 1st argument */ + SWIG_write_double_num_array(myL, x, n); /* push 2nd argument */ + SWIG_write_double_num_array(myL, y, n); /* push 3rd argument */ + + /* do the call (3 arguments, 2 result) */ + if(lua_pcall(myL, 3, 2, 0) != 0) + fprintf(stderr, "error running function `%s': %s", + mapform_funcstr, lua_tostring(myL, -1)); + + /* retrieve results */ + if(!lua_istable(myL, -2)) { + fprintf(stderr, "function `%s' must return a table as 1st result", mapform_funcstr); + return; + } + if(!lua_istable(myL, -1)) { + fprintf(stderr, "function `%s' must return a table as 2nd result", mapform_funcstr); + return; + } + xtemp = (PLFLT*)LUA_get_double_num_array_var(myL, -2, &len); + if(!xtemp || len!=n) { + fprintf(stderr, "function `%s' must return a table of length %d", mapform_funcstr, n); + return; + } + for(i=0; i<n; i++) + x[i]=xtemp[i]; + LUA_FREE_ARRAY(xtemp); + + ytemp = (PLFLT*)LUA_get_double_num_array_var(myL, -1, &len); + if(!ytemp || len!=n) { + fprintf(stderr, "function `%s' must return a table of length %d", mapform_funcstr, n); + return; + } + for(i=0; i<n; i++) + y[i]=ytemp[i]; + LUA_FREE_ARRAY(ytemp); + + lua_pop(myL, 2); /* pop returned values */ + + return; } -%} */ +%} typedef PLINT (*defined_func)(PLFLT, PLFLT); typedef void (*fill_func)(PLINT, PLFLT*, PLFLT*); @@ -549,6 +599,47 @@ typedef void (*pltr_func)(PLFLT, PLFLT, PLFLT *, PLFLT*, PLPointer); typedef void (*mapform_func)(PLINT, PLFLT *, PLFLT*); typedef PLFLT (*f2eval_func)(PLINT, PLINT, PLPointer); + +static char mypltr_funcstr[255]; + +/* This is the callback that gets handed to the C code. + It, in turn, calls the Lua callback */ +void mypltr(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, void *pltr_data) +{ + *tx=0; + *ty=0; + + /* check Lua state */ + if(myL==NULL) { + fprintf(stderr, "Lua state is not set!"); + return; + } + + /* push functions and arguments */ + lua_getglobal(myL, mypltr_funcstr); /* function to be called */ + lua_pushnumber(myL, x); /* push 1st argument */ + lua_pushnumber(myL, y); /* push 2nd argument */ + + /* do the call (2 arguments, 2 result) */ + if(lua_pcall(myL, 2, 2, 0) != 0) + fprintf(stderr, "error running function `%s': %s", + mypltr_funcstr, lua_tostring(myL, -1)); + + /* retrieve results */ + if(!lua_isnumber(myL, -2)) { + fprintf(stderr, "function `%s' must return a number as 1st result", mypltr_funcstr); + return; + } + if(!lua_isnumber(myL, -1)) { + fprintf(stderr, "function `%s' must return a number as 2nd result", mypltr_funcstr); + return; + } + *tx = lua_tonumber(myL, -2); + *ty = lua_tonumber(myL, -1); + lua_pop(myL, 2); /* pop returned values */ + + return; +} %} %typemap(in, numinputs=0) defined_func df { @@ -559,8 +650,31 @@ $1 = plfill; } +%typemap(in) mapform_func mapform { + $1 = NULL; + mapform_funcstr[0]='\0'; + myL=NULL; + + if(lua_isnil(L, $input)) { + $1 = NULL; + } else if(lua_isstring(L, $input)) { + $1 = mapform; + strncpy(mapform_funcstr, lua_tostring(L, $input), 255); + myL = L; + } else + SWIG_fail_arg("$symname", $argnum, "$1_type") +} +%typemap(freearg) mapform_func mapform { + mapform_funcstr[0]='\0'; + myL=NULL; +} + + + %typemap(in) pltr_func pltr { $1 = NULL; + mypltr_funcstr[0]='\0'; + myL=NULL; if(lua_isstring(L, $input)) { const char* funcstr = lua_tostring(L, $input); @@ -571,15 +685,17 @@ } else if(strcmp("pltr2", funcstr)==0) { $1 = pltr2; } else { - lua_pushfstring(L, "Unknown pltr function: %s", funcstr); - SWIG_fail; + $1 = mypltr; + strncpy(mypltr_funcstr, funcstr, 255); + myL = L; } - } else if(lua_isfunction(L, $input)) { - lua_pushfstring(L, "Lua pltr function not supported right now."); - SWIG_fail; } else SWIG_fail_arg("$symname", $argnum, "$1_type") } +%typemap(freearg) pltr_func pltr { + mypltr_funcstr[0]='\0'; + myL=NULL; +} /* you can omit the pltr func */ %typemap(default) pltr_func pltr { $1 = NULL; @@ -721,6 +837,7 @@ } %apply PLPointer OBJECT_DATA { PLPointer OBJECT_DATA_img }; + /* this typemap takes a sequence of strings and converts them for plstripc also checks that previous Arrays were of length 4 */ @@ -953,7 +1070,18 @@ %rename(wid) plwid; %rename(wind) plwind; %rename(xormod) plxormod; +%rename(warn) plwarn; +%rename(abort) plabort; %rename(MinMax2dGrid) plMinMax2dGrid; /* swig compatible PLplot API definitions from here on. */ %include plplotcapi.i + +/* A handy way to issue warnings, if need be. */ +void +plwarn(const char *message); + +/* Much the same as plwarn(), but appends ", aborting operation" to the + error message. */ +void +plabort(const char *message); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-02-16 21:09:42
|
Revision: 9532 http://plplot.svn.sourceforge.net/plplot/?rev=9532&view=rev Author: smekal Date: 2009-02-16 21:09:26 +0000 (Mon, 16 Feb 2009) Log Message: ----------- Added support for plgriddata (needed for examples 21). Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-02-16 19:07:06 UTC (rev 9531) +++ trunk/bindings/lua/plplotluac.i 2009-02-16 21:09:26 UTC (rev 9532) @@ -482,27 +482,48 @@ } -/* 2D array, check for consistency input / output version */ -%typemap(in) PLFLT **OutMatrixCk (int ii) { - int jj; +/* Set Y length for later consistency checking, with trailing count */ +/* and 2D array, check for consistency input / output version */ +%typemap(in) (PLFLT *ArrayY, PLINT ny, PLFLT **OutMatrixCk) { + int temp, i; - $1 = read_double_Matrix(L, $input, &ii, &jj ); + $1 = (PLFLT*)LUA_get_double_num_array_var(L, $input, &temp); if(!$1) SWIG_fail; - if( (ii!=Xlen) || (jj!=Ylen) ) { - lua_pushfstring(L, "Vectors must match matrix."); - SWIG_fail; + $2 = Ylen = temp; + + $3=LUA_ALLOC_ARRAY(PLFLT*, Xlen); + if(!$3) SWIG_fail; + for (i = 0; i < Xlen; i++) + $3[i] = NULL; + + for (i = 0; i < Xlen; i++) { + $3[i] = LUA_ALLOC_ARRAY(PLFLT, Ylen); + if(!$3[i]) SWIG_fail; } } -%typemap(freearg) PLFLT **OutMatrixCk { +%typemap(argout) (PLFLT *ArrayY, PLINT ny, PLFLT **OutMatrixCk) { int i; - if($1) { - for (i = 0; i < ii$argnum; i++) - LUA_FREE_ARRAY($1[i]); - LUA_FREE_ARRAY($1); + if($3) { + lua_newtable(L); + for (i = 0; i < Xlen; i++) { + SWIG_write_double_num_array(L, $3[i], Ylen); + lua_rawseti(L,-2,i+1); /* -1 is the inner table, -2 is the outer table*/ + } + SWIG_arg++; } } +%typemap(freearg) (PLFLT *ArrayY, PLINT ny, PLFLT **OutMatrixCk) { + int i; + + LUA_FREE_ARRAY($1); + if($3) { + for (i = 0; i < Xlen; i++) + LUA_FREE_ARRAY($3[i]); + LUA_FREE_ARRAY($3); + } +} /****************************************************************************** String returning functions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sm...@us...> - 2009-08-19 07:55:25
|
Revision: 10291 http://plplot.svn.sourceforge.net/plplot/?rev=10291&view=rev Author: smekal Date: 2009-08-19 07:55:17 +0000 (Wed, 19 Aug 2009) Log Message: ----------- Added Lua bindings to the functions plsarc(), plslabelfunc(), plspal0(), plspal1(). Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2009-08-19 01:02:55 UTC (rev 10290) +++ trunk/bindings/lua/plplotluac.i 2009-08-19 07:55:17 UTC (rev 10291) @@ -611,8 +611,9 @@ typedef PLINT (*defined_func)(PLFLT, PLFLT); typedef void (*fill_func)(PLINT, PLFLT*, PLFLT*); typedef void (*pltr_func)(PLFLT, PLFLT, PLFLT *, PLFLT*, PLPointer); -typedef void (*mapform_func)(PLINT, PLFLT *, PLFLT*); +typedef void (*mapform_func)(PLINT, PLFLT*, PLFLT*); typedef PLFLT (*f2eval_func)(PLINT, PLINT, PLPointer); +typedef void (*label_func)(PLINT, PLFLT, char*, PLINT, PLPointer); %{ typedef PLINT (*defined_func)(PLFLT, PLFLT); @@ -620,6 +621,7 @@ typedef void (*pltr_func)(PLFLT, PLFLT, PLFLT *, PLFLT*, PLPointer); typedef void (*mapform_func)(PLINT, PLFLT *, PLFLT*); typedef PLFLT (*f2eval_func)(PLINT, PLINT, PLPointer); +typedef void (*label_func)(PLINT, PLFLT, char*, PLINT, PLPointer); static char mypltr_funcstr[255]; @@ -661,6 +663,41 @@ return; } + +static char label_funcstr[255]; + +void mylabel(PLINT axis, PLFLT value, char* label, PLINT length, PLPointer data) +{ + PLFLT *xtemp, *ytemp; + int len, i; + + /* check Lua state */ + if(myL==NULL) { + fprintf(stderr, "Lua state is not set!"); + return; + } + + /* push functions and arguments */ + lua_getglobal(myL, label_funcstr); /* function to be called */ + lua_pushnumber(myL, axis); /* push 1st argument */ + lua_pushnumber(myL, value); /* push 1st argument */ + + /* do the call (2 arguments, 1 result) */ + if(lua_pcall(myL, 2, 1, 0) != 0) + fprintf(stderr, "error running function `%s': %s", + label_funcstr, lua_tostring(myL, -1)); + + /* retrieve results */ + if(!lua_isstring(myL, -1)) { + fprintf(stderr, "function `%s' must return a string as result", label_funcstr); + return; + } + strncpy(label, lua_tostring(myL, -1), length); + + lua_pop(myL, 1); /* pop returned values */ + + return; +} %} %typemap(in, numinputs=0) defined_func df { @@ -674,7 +711,6 @@ %typemap(in) mapform_func mapform { $1 = NULL; mapform_funcstr[0]='\0'; - myL=NULL; if(lua_isnil(L, $input)) { $1 = NULL; @@ -687,15 +723,32 @@ } %typemap(freearg) mapform_func mapform { mapform_funcstr[0]='\0'; - myL=NULL; } +/* you can omit PLPointer data */ +%typemap(in, numinputs=0) PLPointer data { + $1 = NULL; +} +%typemap(in) label_func lf { + $1 = NULL; + label_funcstr[0]='\0'; + + if(lua_isnil(L, $input)) { + $1 = NULL; + } else if(lua_isstring(L, $input)) { + $1 = mylabel; + strncpy(label_funcstr, lua_tostring(L, $input), 255); + myL = L; + } else + SWIG_fail_arg("$symname", $argnum, "$1_type") +} +%typemap(freearg) label_func lf { +} %typemap(in) pltr_func pltr { $1 = NULL; mypltr_funcstr[0]='\0'; - myL=NULL; if(lua_isstring(L, $input)) { const char* funcstr = lua_tostring(L, $input); @@ -715,7 +768,6 @@ } %typemap(freearg) pltr_func pltr { mypltr_funcstr[0]='\0'; - myL=NULL; } /* you can omit the pltr func */ %typemap(default) pltr_func pltr { @@ -941,6 +993,7 @@ %rename(setcontlabelformat) pl_setcontlabelformat; %rename(setcontlabelparam) pl_setcontlabelparam; %rename(adv) pladv; +%rename(arc) plarc; %rename(axes) plaxes; %rename(bin) plbin; %rename(bop) plbop; @@ -1057,11 +1110,14 @@ %rename(sfont) plsfont; %rename(shade) plshade; %rename(shades) plshades; +%rename(slabelfunc) plslabelfunc; %rename(smaj) plsmaj; %rename(smem) plsmem; %rename(smin) plsmin; %rename(sori) plsori; %rename(spage) plspage; +%rename(spal0) plspal0; +%rename(spal1) plspal1; %rename(spause) plspause; %rename(sstrm) plsstrm; %rename(ssub) plssub; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2011-04-13 02:45:35
|
Revision: 11697 http://plplot.svn.sourceforge.net/plplot/?rev=11697&view=rev Author: airwin Date: 2011-04-13 02:45:28 +0000 (Wed, 13 Apr 2011) Log Message: ----------- Correct syntax error (missing trailing ";") in SWIG_fail_arg calls in C code wrapped by typemap. For some reason these syntax errors did not cause issues with our build and run testing, but they did cause major problems (empty output file) for styling of plplotluac.i with uncrustify. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2011-04-12 18:39:47 UTC (rev 11696) +++ trunk/bindings/lua/plplotluac.i 2011-04-13 02:45:28 UTC (rev 11697) @@ -785,7 +785,7 @@ strncpy(mapform_funcstr, lua_tostring(L, $input), 255); myL = L; } else - SWIG_fail_arg("$symname", $argnum, "$1_type") + SWIG_fail_arg("$symname", $argnum, "$1_type"); } %typemap(freearg) mapform_func mapform { mapform_funcstr[0]='\0'; @@ -807,7 +807,7 @@ strncpy(label_funcstr, lua_tostring(L, $input), 255); myL = L; } else - SWIG_fail_arg("$symname", $argnum, "$1_type") + SWIG_fail_arg("$symname", $argnum, "$1_type"); } %typemap(freearg) label_func lf { } @@ -830,7 +830,7 @@ myL = L; } } else - SWIG_fail_arg("$symname", $argnum, "$1_type") + SWIG_fail_arg("$symname", $argnum, "$1_type"); } %typemap(freearg) pltr_func pltr { mypltr_funcstr[0]='\0'; @@ -851,7 +851,7 @@ strncpy(myct_funcstr, funcstr, 255); myL = L; } else - SWIG_fail_arg("$symname", $argnum, "$1_type") + SWIG_fail_arg("$symname", $argnum, "$1_type"); } /* you can omit the ct func */ %typemap(default) ct_func ctf { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2013-06-07 21:34:07
|
Revision: 12376 http://sourceforge.net/p/plplot/code/12376 Author: andrewross Date: 2013-06-07 21:34:02 +0000 (Fri, 07 Jun 2013) Log Message: ----------- Add missing plgcmap1_range function. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2013-06-07 18:46:54 UTC (rev 12375) +++ trunk/bindings/lua/plplotluac.i 2013-06-07 21:34:02 UTC (rev 12376) @@ -1382,6 +1382,7 @@ %rename( font ) plfont; %rename( fontld ) plfontld; %rename( gchr ) plgchr; +%rename( gcmap1_range ) plgcmap1_range; %rename( gcol0 ) plgcol0; %rename( gcolbg ) plgcolbg; %rename( gcol0a ) plgcol0a; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2013-11-05 15:04:51
|
Revision: 12659 http://sourceforge.net/p/plplot/code/12659 Author: andrewross Date: 2013-11-05 15:04:47 +0000 (Tue, 05 Nov 2013) Log Message: ----------- Fix potential uninitialized variable warning in lua bindings. Modified Paths: -------------- trunk/bindings/lua/plplotluac.i Modified: trunk/bindings/lua/plplotluac.i =================================================================== --- trunk/bindings/lua/plplotluac.i 2013-11-05 14:56:10 UTC (rev 12658) +++ trunk/bindings/lua/plplotluac.i 2013-11-05 15:04:47 UTC (rev 12659) @@ -1229,6 +1229,7 @@ free( $1 ); $1 = NULL; } } +%typemap( default ) const char *legline[4] { $1 = NULL; } // No count but check consistency with previous %typemap( in, checkfn = "lua_istable" ) const char **ArrayCk { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |