Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский

Please note that the recommended version of Scilab is 6.0.0. This page might be outdated.
See the recommended documentation of this function

Aide de Scilab >> API Scilab > string > string example

string example

String use case.

Description

This example shows how to get a string variable and return it to Scilab.

Gateway Source

#include "api_scilab.h"
int stringExample(char *fname,unsigned long fname_len)
{
	SciErr sciErr;
	int* piAddr = NULL;
	int iType   = 0;
	int iRet    = 0;

    CheckInputArgument(pvApiCtx, 1, 1);
    CheckOutputArgument(pvApiCtx, 0, 1);

	sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
	if(sciErr.iErr)
	{
		printError(&sciErr, 0);
		return 0;
	}

	if(isStringType(pvApiCtx, piAddr))
	{
		if(isScalar(pvApiCtx, piAddr))
		{
			char* pstData = NULL;

			iRet = getAllocatedSingleString(pvApiCtx, piAddr, &pstData);
			if(iRet)
			{
				freeAllocatedSingleString(pstData);
				return iRet;
			}

			iRet = createSingleString(pvApiCtx, nbInputArgument(pvApiCtx) + 1, pstData);
			if(iRet)
			{
				freeAllocatedSingleString(pstData);
				return iRet;
			}

			freeAllocatedSingleString(pstData);
		}
		else
		{
			int iRows       = 0;
			int iCols       = 0;
			char** pstData  = NULL;

			iRet = getAllocatedMatrixOfString(pvApiCtx, piAddr, &iRows, &iCols, &pstData);
			if(iRet)
			{
				freeAllocatedMatrixOfString(iRows, iCols, pstData);
				return iRet;
			}

			sciErr = createMatrixOfString(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iRows, iCols, pstData);
			if(sciErr.iErr)
			{
				freeAllocatedMatrixOfString(iRows, iCols, pstData);
				printError(&sciErr, 0);
				return sciErr.iErr;
			}

			freeAllocatedMatrixOfString(iRows, iCols, pstData);
		}
		
        AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
	}
	else
	{
        AssignOutputVariable(pvApiCtx, 1) = 0;
	}
	return 0;
}

Scilab test script

a = "Scilab";
b = ["New","Scilab";"API","functions"];
if stringExample(a) <> a then pause, end
if stringExample(b) <> b then pause, end
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 13:54:44 CEST 2014