simplify SWIG_SciString_AsChar()

This commit is contained in:
Simon Marchetto 2015-06-23 16:24:16 +02:00
commit 078ad6cb86

View file

@ -14,12 +14,9 @@
SWIGINTERN int SWIGINTERN int
SWIG_SciString_AsChar(void *pvApiCtx, int iVar, char *pcValue, char *fname) { SWIG_SciString_AsChar(void *pvApiCtx, int iVar, char *pcValue, char *fname) {
SciErr sciErr; SciErr sciErr;
int iType = 0;
int iRows = 0;
int iCols = 0;
int *piAddrVar = NULL; int *piAddrVar = NULL;
char *pstStrings = NULL; char *pstValue = NULL;
int piLength = 0; int iRet;
sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar); sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar);
if (sciErr.iErr) { if (sciErr.iErr) {
@ -27,30 +24,22 @@ SWIG_SciString_AsChar(void *pvApiCtx, int iVar, char *pcValue, char *fname) {
return SWIG_ERROR; return SWIG_ERROR;
} }
sciErr = getVarType(pvApiCtx, piAddrVar, &iType); if (isStringType(pvApiCtx, piAddrVar) == 0)
if (sciErr.iErr) { {
printError(&sciErr, 0); Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A single string expected.\n"), fname, iVar);
return SWIG_ERROR; return SWIG_TypeError;
} }
if (iType != sci_strings) {
Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A string expected.\n"), fname, iVar); iRet = getAllocatedSingleString(pvApiCtx, piAddrVar, &pstValue);
if (iRet) {
return SWIG_ERROR; return SWIG_ERROR;
} }
pstStrings = (char *)malloc(sizeof(char)); if (pcValue != NULL) {
sciErr = getMatrixOfString(pvApiCtx, piAddrVar, &iRows, &iCols, &piLength, (char **)&pstStrings); *pcValue = pstValue[0];
if (sciErr.iErr) {
printError(&sciErr, 0);
return SWIG_ERROR;
} }
if (iRows * iCols != 1) {
Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A string expected.\n"), fname, iVar);
return SWIG_ERROR;
}
*pcValue = pstStrings[0];
free(pstStrings);
freeAllocatedSingleString(pstValue);
return SWIG_OK; return SWIG_OK;
} }
} }