scilab: roll back on primitive typemaps: return Scilab double on signed integers
This commit is contained in:
parent
ec2d851f4f
commit
a6f824a9a8
5 changed files with 81 additions and 106 deletions
|
|
@ -1,32 +1,32 @@
|
||||||
exec("swigtest.start", -1);
|
exec("swigtest.start", -1);
|
||||||
|
|
||||||
|
// Char
|
||||||
|
if typeof(returnChar()) <> "string" then swigtesterror(); end
|
||||||
|
if returnChar() <> "a" then swigtesterror(); end
|
||||||
if typeof(returnSignedChar()) <> "int8" then swigtesterror(); end
|
if typeof(returnSignedChar()) <> "int8" then swigtesterror(); end
|
||||||
if returnSignedChar() <> int8(42) then swigtesterror(); end
|
if returnSignedChar() <> int8(42) then swigtesterror(); end
|
||||||
if typeof(returnUnsignedChar()) <> "uint8" then swigtesterror(); end
|
if typeof(returnUnsignedChar()) <> "uint8" then swigtesterror(); end
|
||||||
if returnUnsignedChar() <> uint8(42) then swigtesterror(); end
|
if returnUnsignedChar() <> uint8(42) then swigtesterror(); end
|
||||||
if typeof(returnChar()) <> "string" then swigtesterror(); end
|
|
||||||
if returnChar() <> "a" then swigtesterror(); end
|
|
||||||
|
|
||||||
if typeof(returnShortAsInt16()) <> "int16" then swigtesterror(); end
|
// Short
|
||||||
if returnShortAsInt16() <> int16(42) then swigtesterror(); end
|
if typeof(returnShort()) <> "constant" then swigtesterror(); end
|
||||||
if typeof(returnSignedShortAsInt16()) <> "int16" then swigtesterror(); end
|
if returnShort() <> 42 then swigtesterror(); end
|
||||||
if returnSignedShortAsInt16() <> int16(42) then swigtesterror(); end
|
|
||||||
if typeof(returnUnsignedShort()) <> "uint16" then swigtesterror(); end
|
if typeof(returnUnsignedShort()) <> "uint16" then swigtesterror(); end
|
||||||
if returnUnsignedShort() <> uint16(42) then swigtesterror(); end
|
if returnUnsignedShort() <> uint16(42) then swigtesterror(); end
|
||||||
|
|
||||||
if typeof(returnIntAsInt32()) <> "int32" then swigtesterror(); end
|
// Int
|
||||||
if returnIntAsInt32() <> int32(42) then swigtesterror(); end
|
if typeof(returnInt()) <> "constant" then swigtesterror(); end
|
||||||
if typeof(returnSignedIntAsInt32()) <> "int32" then swigtesterror(); end
|
if returnInt() <> 42 then swigtesterror(); end
|
||||||
if returnSignedIntAsInt32() <> int32(42) then swigtesterror(); end
|
|
||||||
if typeof(returnLongAsInt32()) <> "int32" then swigtesterror(); end
|
|
||||||
if returnLongAsInt32() <> int32(42) then swigtesterror(); end
|
|
||||||
if typeof(returnSignedLongAsInt32()) <> "int32" then swigtesterror(); end
|
|
||||||
if returnSignedLongAsInt32() <> int32(42) then swigtesterror(); end
|
|
||||||
if typeof(returnUnsignedInt()) <> "uint32" then swigtesterror(); end
|
if typeof(returnUnsignedInt()) <> "uint32" then swigtesterror(); end
|
||||||
if returnUnsignedInt() <> uint32(42) then swigtesterror(); end
|
if returnUnsignedInt() <> uint32(42) then swigtesterror(); end
|
||||||
|
|
||||||
|
// Long
|
||||||
|
if typeof(returnLong()) <> "constant" then swigtesterror(); end
|
||||||
|
if returnLong() <> 42 then swigtesterror(); end
|
||||||
if typeof(returnUnsignedLong()) <> "uint32" then swigtesterror(); end
|
if typeof(returnUnsignedLong()) <> "uint32" then swigtesterror(); end
|
||||||
if returnUnsignedLong() <> uint32(42) then swigtesterror(); end
|
if returnUnsignedLong() <> uint32(42) then swigtesterror(); end
|
||||||
|
|
||||||
|
// Double & float
|
||||||
if typeof(returnDouble()) <> "constant" then swigtesterror(); end
|
if typeof(returnDouble()) <> "constant" then swigtesterror(); end
|
||||||
if returnDouble() <> 42.42 then swigtesterror(); end
|
if returnDouble() <> 42.42 then swigtesterror(); end
|
||||||
if typeof(returnFloat()) <> "constant" then swigtesterror(); end
|
if typeof(returnFloat()) <> "constant" then swigtesterror(); end
|
||||||
|
|
|
||||||
|
|
@ -1,70 +1,60 @@
|
||||||
%module scilab_typemaps
|
%module scilab_typemaps
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
/* Scilab string */
|
// Char
|
||||||
char returnChar()
|
char returnChar()
|
||||||
{
|
{
|
||||||
return 'a';
|
return 'a';
|
||||||
}
|
}
|
||||||
|
signed char returnSignedChar()
|
||||||
/* Scilab [u]int8 */
|
{
|
||||||
signed char returnSignedChar()
|
|
||||||
{
|
|
||||||
return (signed char)42;
|
return (signed char)42;
|
||||||
}
|
}
|
||||||
unsigned char returnUnsignedChar()
|
unsigned char returnUnsignedChar()
|
||||||
{
|
{
|
||||||
return (unsigned char) 42;
|
return (unsigned char) 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Scilab [u]int16 */
|
// Short
|
||||||
short returnShortAsInt16()
|
short returnShort()
|
||||||
{
|
{
|
||||||
return 42;
|
return 42;
|
||||||
}
|
}
|
||||||
signed short returnSignedShortAsInt16()
|
unsigned short returnUnsignedShort()
|
||||||
{
|
{
|
||||||
return (signed short) 42;
|
|
||||||
}
|
|
||||||
unsigned short returnUnsignedShort()
|
|
||||||
{
|
|
||||||
return (unsigned short) 42;
|
return (unsigned short) 42;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Scilab [u]int32 */
|
// Int
|
||||||
int returnIntAsInt32()
|
int returnInt()
|
||||||
{
|
{
|
||||||
return 42;
|
return 42;
|
||||||
}
|
}
|
||||||
long returnLongAsInt32()
|
|
||||||
{
|
|
||||||
return (long) 42;
|
|
||||||
}
|
|
||||||
signed int returnSignedIntAsInt32()
|
|
||||||
{
|
|
||||||
return (signed int) 42;
|
|
||||||
}
|
|
||||||
signed long returnSignedLongAsInt32()
|
|
||||||
{
|
|
||||||
return (signed long) 42;
|
|
||||||
}
|
|
||||||
unsigned int returnUnsignedInt()
|
|
||||||
{
|
|
||||||
return (unsigned int) 42;
|
|
||||||
}
|
|
||||||
unsigned long returnUnsignedLong()
|
|
||||||
{
|
|
||||||
return (unsigned long) 42;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scilab double */
|
unsigned int returnUnsignedInt()
|
||||||
double returnDouble()
|
{
|
||||||
{
|
return (unsigned int) 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Long
|
||||||
|
long returnLong()
|
||||||
|
{
|
||||||
|
return (long) 42;
|
||||||
|
}
|
||||||
|
unsigned long returnUnsignedLong()
|
||||||
|
{
|
||||||
|
return (unsigned long) 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Double & float
|
||||||
|
double returnDouble()
|
||||||
|
{
|
||||||
return 42.42;
|
return 42.42;
|
||||||
}
|
}
|
||||||
float returnFloat()
|
float returnFloat()
|
||||||
{
|
{
|
||||||
return (float) 42;
|
return (float) 42;
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
/*
|
/*
|
||||||
* C-type: int
|
* C-type: int
|
||||||
* Scilab type: 32-bit signed integer
|
* Scilab type: double or 32-bit signed integer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%fragment(SWIG_AsVal_frag(int), "header", fragment="SWIG_SciInt32_AsInt") {
|
%fragment(SWIG_AsVal_frag(int), "header", fragment="SWIG_SciDoubleOrInt32_AsInt") {
|
||||||
%#define SWIG_AsVal_int(scilabValue, valuePointer) SWIG_SciInt32_AsInt(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFname())
|
%#define SWIG_AsVal_int(scilabValue, valuePointer) SWIG_SciDoubleOrInt32_AsInt(pvApiCtx, scilabValue, valuePointer, SWIG_Scilab_GetFname())
|
||||||
}
|
}
|
||||||
%fragment("SWIG_SciInt32_AsInt", "header") {
|
%fragment("SWIG_SciDoubleOrInt32_AsInt", "header") {
|
||||||
SWIGINTERN int
|
SWIGINTERN int
|
||||||
SWIG_SciInt32_AsInt(void *_pvApiCtx, SwigSciObject _iVar, int *_piValue, char *_fname)
|
SWIG_SciDoubleOrInt32_AsInt(void *_pvApiCtx, SwigSciObject _iVar, int *_piValue, char *_fname)
|
||||||
{
|
{
|
||||||
SciErr sciErr;
|
SciErr sciErr;
|
||||||
int iRet = 0;
|
int iRet = 0;
|
||||||
|
|
@ -74,21 +74,14 @@ SWIG_SciInt32_AsInt(void *_pvApiCtx, SwigSciObject _iVar, int *_piValue, char *_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
%fragment(SWIG_From_frag(int), "header", fragment="SWIG_SciInt32_FromInt") {
|
%fragment(SWIG_From_frag(int), "header", fragment="SWIG_SciDouble_FromInt") {
|
||||||
%#define SWIG_From_int(scilabValue) SWIG_SciInt32_FromInt(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFname())
|
%#define SWIG_From_int(scilabValue) SWIG_SciDouble_FromInt(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFname())
|
||||||
}
|
}
|
||||||
%fragment("SWIG_SciInt32_FromInt", "header") {
|
%fragment("SWIG_SciDouble_FromInt", "header") {
|
||||||
SWIGINTERN int
|
SWIGINTERN int
|
||||||
SWIG_SciInt32_FromInt(void *_pvApiCtx, int _iVarOut, int _iValue, char *_fname)
|
SWIG_SciDouble_FromInt(void *_pvApiCtx, int _iVarOut, int _iValue, char *_fname)
|
||||||
{
|
{
|
||||||
SciErr sciErr;
|
if (createScalarDouble(_pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + _iVarOut, (double) _iValue)) {
|
||||||
int iRowsOut = 1;
|
|
||||||
int iColsOut = 1;
|
|
||||||
|
|
||||||
sciErr = createMatrixOfInteger32(_pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + _iVarOut, iRowsOut, iColsOut, &_iValue);
|
|
||||||
if (sciErr.iErr)
|
|
||||||
{
|
|
||||||
printError(&sciErr, 0);
|
|
||||||
return SWIG_ERROR;
|
return SWIG_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* C-type: long
|
* C-type: long
|
||||||
* Scilab type: int32
|
* Scilab type: double or int32
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%fragment(SWIG_AsVal_frag(long), "header", fragment="SWIG_Int_AsLong") {
|
%fragment(SWIG_AsVal_frag(long), "header", fragment="SWIG_Int_AsLong") {
|
||||||
|
|
@ -30,7 +30,7 @@ SWIG_Int_FromLong(void *_pvApiCtx, int _iVarOut, long _lValue, char *_fname) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* C-type: ptrdiff_t
|
* C-type: ptrdiff_t
|
||||||
* Scilab type: int32
|
* Scilab type: double or int32
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%fragment(SWIG_AsVal_frag(ptrdiff_t), "header", fragment="SWIG_Int_AsPtrDiff") {
|
%fragment(SWIG_AsVal_frag(ptrdiff_t), "header", fragment="SWIG_Int_AsPtrDiff") {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* C-type: short
|
* C-type: short
|
||||||
* Scilab type: double scalar
|
* Scilab type: double or int16
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%fragment(SWIG_AsVal_frag(short), "header", fragment="SWIG_SciInt16_AsShort") {
|
%fragment(SWIG_AsVal_frag(short), "header", fragment="SWIG_SciInt16_AsShort") {
|
||||||
|
|
@ -62,18 +62,10 @@ SWIG_SciInt16_AsShort(void *_pvApiCtx, int _iVar, short *_psValue, char *_fname)
|
||||||
%fragment(SWIG_From_frag(short), "header", fragment="SWIG_SciInt16_FromShort") {
|
%fragment(SWIG_From_frag(short), "header", fragment="SWIG_SciInt16_FromShort") {
|
||||||
#define SWIG_From_short(scilabValue) SWIG_SciInt16_FromShort(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFname())
|
#define SWIG_From_short(scilabValue) SWIG_SciInt16_FromShort(pvApiCtx, SWIG_Scilab_GetOutputPosition(), scilabValue, SWIG_Scilab_GetFname())
|
||||||
}
|
}
|
||||||
%fragment("SWIG_SciInt16_FromShort", "header") {
|
%fragment("SWIG_SciInt16_FromShort", "header", fragment=SWIG_From_frag(int)) {
|
||||||
SWIGINTERN int
|
SWIGINTERN int
|
||||||
SWIG_SciInt16_FromShort(void *_pvApiCtx, int _iVarOut, signed short _usValue, char *_fname) {
|
SWIG_SciInt16_FromShort(void *_pvApiCtx, int _iVarOut, short _sValue, char *_fname) {
|
||||||
SciErr sciErr;
|
return SWIG_From_dec(int)((int)_sValue);
|
||||||
int iRowsOut = 1;
|
|
||||||
int iColsOut = 1;
|
|
||||||
sciErr = createMatrixOfInteger16(_pvApiCtx, SWIG_NbInputArgument(_pvApiCtx) + _iVarOut, iRowsOut, iColsOut, &_usValue);
|
|
||||||
if (sciErr.iErr) {
|
|
||||||
printError(&sciErr, 0);
|
|
||||||
return SWIG_ERROR;
|
|
||||||
}
|
|
||||||
return SWIG_NbInputArgument(_pvApiCtx) + _iVarOut;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue