Fix enum typemaps (now base on int conversion)
This commit is contained in:
parent
e2cc98ffc1
commit
e667d59ed9
1 changed files with 15 additions and 41 deletions
|
|
@ -17,59 +17,33 @@
|
||||||
%include <scipointer.swg>
|
%include <scipointer.swg>
|
||||||
%include <scibool.swg>
|
%include <scibool.swg>
|
||||||
|
|
||||||
%fragment("SwigScilabInt32ToEnum", "header") {
|
%fragment("SwigScilabInt32ToEnum", "header", fragment=SWIG_AsVal_frag(int)) {
|
||||||
SWIGINTERN int
|
SWIGINTERN int
|
||||||
SwigScilabInt32ToEnum(void *_pvApiCtx, int _iVar, int *_enumValue, char* _fname) {
|
SwigScilabInt32ToEnum(void *_pvApiCtx, int _iVar, int *_enumValue, char* _fname)
|
||||||
SciErr sciErr;
|
{
|
||||||
int iPrec = 0;
|
int iValue = 0;
|
||||||
int iRows = 1;
|
if (SWIG_AsVal_dec(int)(_iVar, &iValue) != SWIG_OK)
|
||||||
int iCols = 1;
|
{
|
||||||
int *piAddrVar = NULL;
|
|
||||||
int *piData = NULL;
|
|
||||||
|
|
||||||
sciErr = getVarAddressFromPosition(pvApiCtx, _iVar, &piAddrVar);
|
|
||||||
if (sciErr.iErr) {
|
|
||||||
printError(&sciErr, 0);
|
|
||||||
return SWIG_ERROR;
|
return SWIG_ERROR;
|
||||||
}
|
}
|
||||||
|
if (_enumValue)
|
||||||
sciErr = getMatrixOfIntegerPrecision(pvApiCtx, piAddrVar, &iPrec);
|
{
|
||||||
if (sciErr.iErr) {
|
*_enumValue = iValue;
|
||||||
printError(&sciErr, 0);
|
|
||||||
return SWIG_ERROR;
|
|
||||||
}
|
}
|
||||||
if (iPrec != SCI_INT32) {
|
|
||||||
Scierror(999, _("%s: Wrong type for input argument #%d: A 32-bit integer expected.\n"), _fname, _iVar);
|
|
||||||
return SWIG_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
sciErr = getMatrixOfInteger32(pvApiCtx, piAddrVar, &iRows, &iCols, &piData);
|
|
||||||
if (sciErr.iErr) {
|
|
||||||
printError(&sciErr, 0);
|
|
||||||
return SWIG_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
*_enumValue = (int)piData[0];
|
|
||||||
|
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
%fragment("SwigScilabInt32FromEnum", "header") {
|
%fragment("SwigScilabInt32FromEnum", "header") {
|
||||||
SWIGINTERN int
|
SWIGINTERN int
|
||||||
SwigScilabInt32FromEnum(void *_pvApiCtx, int _iVarOut, int _enumValue) {
|
SwigScilabInt32FromEnum(void *_pvApiCtx, int _iVarOut, int _enumValue)
|
||||||
SciErr sciErr;
|
{
|
||||||
int iRowsOut = 1;
|
int iRet;
|
||||||
int iColsOut = 1;
|
iRet = createScalarInteger32(pvApiCtx, nbInputArgument(pvApiCtx) + _iVarOut, _enumValue);
|
||||||
|
if (iRet)
|
||||||
sciErr = createMatrixOfInteger32(pvApiCtx, Rhs + _iVarOut, iRowsOut, iColsOut, &_enumValue);
|
{
|
||||||
if (sciErr.iErr) {
|
|
||||||
printError(&sciErr, 0);
|
|
||||||
return SWIG_ERROR;
|
return SWIG_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
AssignOutputVariable(pvApiCtx, _iVarOut) = nbInputArgument(pvApiCtx) + _iVarOut;
|
AssignOutputVariable(pvApiCtx, _iVarOut) = nbInputArgument(pvApiCtx) + _iVarOut;
|
||||||
|
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue