simplify SWIG_SciString_AsChar()
This commit is contained in:
parent
b05f0057ca
commit
078ad6cb86
1 changed files with 12 additions and 23 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue