本文整理汇总了C++中types::typed_list类的典型用法代码示例。如果您正苦于以下问题:C++ typed_list类的具体用法?C++ typed_list怎么用?C++ typed_list使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了typed_list类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sci_pointer_xproperty
types::Function::ReturnValue sci_pointer_xproperty(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
if (in.size() != 0)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), funname.data(), 0);
return types::Function::Error;
}
if (_iRetCount > 1)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), funname.data(), 1);
return types::Function::Error;
}
const int isrun = C2F(cosim).isrun;
if (!isrun)
{
Scierror(999, _("%s: scicosim is not running.\n"), funname.data());
return types::Function::Error;
}
// Retrieve the current block's continuous state and copy it to the return
const int* pointer_xproperty = get_pointer_xproperty();
const int npointer_xproperty = get_npointer_xproperty();
double* data;
types::Double* ret = new types::Double(npointer_xproperty, 1, &data);
#ifdef _MSC_VER
std::transform(pointer_xproperty, pointer_xproperty + npointer_xproperty, stdext::checked_array_iterator<double*>(data, npointer_xproperty), toDouble);
#else
std::transform(pointer_xproperty, pointer_xproperty + npointer_xproperty, data, toDouble);
#endif
out.push_back(ret);
return types::Function::OK;
}
开发者ID:FOSSEE-Internship,项目名称:scilab,代码行数:36,代码来源:sci_pointer_xproperty.cpp
示例2: sci_host
types::Function::ReturnValue sci_host(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
if (in.size() != 1)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "host", 1);
return Function::Error;
}
types::InternalType* pIT = in[0];
if (pIT->isString() == false || pIT->getAs<types::String>()->getSize() != 1)
{
Scierror(89, _("%s: Wrong size for input argument #%d: A string expected.\n"), "host", 1);
return Function::Error;
}
wchar_t* pstCommand = pIT->getAs<types::String>()->get(0);
int stat = 0;
systemcW(pstCommand, &stat);
out.push_back(new types::Double(stat));
return Function::OK;
}
开发者ID:scitao,项目名称:scilab,代码行数:24,代码来源:sci_host.cpp
示例3: sci_diffobjs
types::Function::ReturnValue sci_diffobjs(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
if (in.size() != 2)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), funname.data(), 2);
return types::Function::Error;
}
if (_iRetCount > 1)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), funname.data(), 1);
return types::Function::Error;
}
types::Double* ret = new types::Double(1);
if (*in[0] == *in[1])
{
ret->set(0, 0);
}
out.push_back(ret);
return types::Function::OK;
}
开发者ID:leowzukw,项目名称:scilab-mirror,代码行数:24,代码来源:sci_diffobjs.cpp
示例4: sci_isglobal
Function::ReturnValue sci_isglobal(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
types::typed_list::iterator inIterator;
int iWrongType = 1;
if (in.size() != 1)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "isglobal", 1);
return Function::Error;
}
else
{
if (in[0]->isString() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: Single string expected.\n"), "isglobal", 1);
return Function::Error;
}
String* pS = in[0]->getAs<types::String>();
if (pS->isScalar() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: Single string expected.\n"), "isglobal", 1);
return Function::Error;
}
if (symbol::Context::getInstance()->isGlobalVisible(symbol::Symbol(pS->get(0))))
{
out.push_back(new types::Bool(1));
}
else
{
out.push_back(new types::Bool(0));
}
}
return Function::OK;
}
开发者ID:scitao,项目名称:scilab,代码行数:36,代码来源:sci_isglobal.cpp
示例5: intString
types::Function::ReturnValue intString(T* pInt, types::typed_list &out)
{
int iDims = pInt->getDims();
int* piDimsArray = pInt->getDimsArray();
types::String *pstOutput = new types::String(iDims, piDimsArray);
int iSize = pInt->getSize();
for (int i = 0 ; i < iSize ; i++)
{
std::wostringstream ostr;
DoubleComplexMatrix2String(&ostr, (double)pInt->get(i), 0);
pstOutput->set(i, ostr.str().c_str());
}
out.push_back(pstOutput);
return types::Function::OK;
}
开发者ID:leowzukw,项目名称:scilab-mirror,代码行数:16,代码来源:sci_string.cpp
示例6: sci_notify
/*--------------------------------------------------------------------------*/
types::Function::ReturnValue sci_notify(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
types::String* pString = NULL;
wchar_t* wcsInput = NULL;
if (in.size() != 1)
{
Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "notify" , 1);
return types::Function::Error;
}
if (in[0]->isString() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), "notify", 1);
return types::Function::Error;
}
pString = in[0]->getAs<types::String>();
if (pString->isScalar() == FALSE)
{
Scierror(999, _("%s: Wrong size for input argument #%d: string expected.\n"), "notify" , 1);
return types::Function::Error;
}
wcsInput = pString->get(0);
char* strInput = wide_string_to_UTF8(wcsInput);
try
{
org_scilab_modules_action_binding_utils::Signal::notify(getScilabJavaVM(), strInput);
}
catch (const GiwsException::JniException & e)
{
Scierror(999, _("%s: A Java exception arisen:\n%s"), "notify", e.whatStr().c_str());
FREE(strInput);
return types::Function::Error;
}
FREE(strInput);
return types::Function::OK;
}
开发者ID:leowzukw,项目名称:scilab-mirror,代码行数:40,代码来源:sci_notify.cpp
示例7: sci_zeros
/*--------------------------------------------------------------------------*/
types::Function::ReturnValue sci_zeros(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
types::Double* pOut = NULL;
int iDims = 0;
int* piDims = NULL;
bool alloc = false;
bool ret = getDimsFromArguments(in, "zeros", &iDims, &piDims, &alloc);
if (ret == false)
{
switch (iDims)
{
case -1:
Scierror(21, _("Invalid index.\n"));
break;
case 1:
{
//call overload
ast::ExecVisitor exec;
return Overload::generateNameAndCall(L"zeros", in, _iRetCount, out, &exec);
}
}
return types::Function::Error;
}
pOut = new Double(iDims, piDims);
if (alloc)
{
delete[] piDims;
}
pOut->setZeros();
out.push_back(pOut);
return types::Function::OK;
}
开发者ID:scitao,项目名称:scilab,代码行数:38,代码来源:sci_zeros.cpp
示例8: sci_end_scicosim
types::Function::ReturnValue sci_end_scicosim(types::typed_list &in, int _iRetCount, types::typed_list &/*out*/)
{
if (in.size() != 0)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), funname.data(), 0);
return types::Function::Error;
}
if (_iRetCount > 1)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), funname.data(), 1);
return types::Function::Error;
}
const int isrun = C2F(cosim).isrun;
if (!isrun)
{
Scierror(999, _("%s: scicosim is not running.\n"), funname.data());
return types::Function::Error;
}
end_scicos_sim();
return types::Function::OK;
}
开发者ID:FOSSEE-Internship,项目名称:scilab,代码行数:24,代码来源:sci_end_scicosim.cpp
示例9: sci_pause
types::Function::ReturnValue sci_pause(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
if (ConfigVariable::getEnableDebug() == true)
{
sciprint(_("%s: function is disabled in debug mode.\n"), "pause");
return types::Function::OK;
}
if (in.size() != 0)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "pause", 0);
return types::Function::Error;
}
ConfigVariable::IncreasePauseLevel();
// unlock console thread to display prompt again
ThreadManagement::SendConsoleExecDoneSignal();
//return to console so change mode to 2
int iOldMode = ConfigVariable::getPromptMode();
ConfigVariable::setPromptMode(2);
int iPauseLevel = ConfigVariable::getPauseLevel();
while (ConfigVariable::getPauseLevel() == iPauseLevel)
{
ThreadManagement::SendAwakeRunnerSignal();
ThreadManagement::WaitForRunMeSignal();
StaticRunner_launch();
}
//return from console so change mode to initial
ConfigVariable::setPromptMode(iOldMode);
return types::Function::OK;
}
开发者ID:lucianofreitas,项目名称:scilab,代码行数:36,代码来源:sci_pause.cpp
示例10: sci_interp3d
types::Function::ReturnValue sci_interp3d(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
// input
types::Double* pDblXYZ[3] = {NULL, NULL, NULL};
types::TList* pTList = NULL;
types::Double* pDblX = NULL;
types::Double* pDblY = NULL;
types::Double* pDblZ = NULL;
types::Double* pDblOrder = NULL;
types::Double* pDblCoef = NULL;
types::Double* pDblXyzminmax = NULL;
// output
types::Double* pDblFp = NULL;
types::Double* pDblFpdx = NULL;
types::Double* pDblFpdy = NULL;
types::Double* pDblFpdz = NULL;
int iType = 0;
int order[3];
int sizeOfXp;
// *** check the minimal number of input args. ***
if ((in.size() < 4) || (5 < in.size()))
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "interp3d", 4);
return types::Function::Error;
}
// *** check number of output args according the methode. ***
if (_iRetCount > 4)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "interp3d", 1, 4);
return types::Function::Error;
}
// *** check type of input args and get it. ***
// xp yp zp
for (int i = 0; i < 3; i++)
{
if (in[i]->isDouble() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d : A matrix expected.\n"), "interp3d", i + 1);
return types::Function::Error;
}
pDblXYZ[i] = in[i]->getAs<types::Double>();
if (pDblXYZ[0]->getRows() != pDblXYZ[i]->getRows() || pDblXYZ[0]->getCols() != pDblXYZ[i]->getCols())
{
Scierror(999, _("%s: Wrong size for input argument #%d : Same size as argument %d expected.\n"), "interp3d", i + 1, 1);
return types::Function::Error;
}
if (pDblXYZ[i]->isComplex())
{
Scierror(999, _("%s: Wrong type for argument #%d: Real matrix expected.\n"), "interp3d", i + 1);
return types::Function::Error;
}
}
sizeOfXp = pDblXYZ[0]->getSize();
if (in[3]->isTList() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d : A tlist of type %s expected.\n"), "interp3d", 4, "tensbs3d");
}
pTList = in[3]->getAs<types::TList>();
if (pTList->getTypeStr() != L"tensbs3d")
{
Scierror(999, _("%s: Wrong type for input argument #%d: A %s tlist expected.\n"), "interp3d", 4, "tensbs3d");
return types::Function::Error;
}
pDblX = pTList->getField(L"tx")->getAs<types::Double>();
pDblY = pTList->getField(L"ty")->getAs<types::Double>();
pDblZ = pTList->getField(L"tz")->getAs<types::Double>();
pDblOrder = pTList->getField(L"order")->getAs<types::Double>();
pDblCoef = pTList->getField(L"bcoef")->getAs<types::Double>();
pDblXyzminmax = pTList->getField(L"xyzminmax")->getAs<types::Double>();
if (in.size() == 5)
{
if (in[4]->isString() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d : string expected.\n"), "interp3d", 5);
return types::Function::Error;
}
wchar_t* wcsType = in[4]->getAs<types::String>()->get(0);
if (wcscmp(wcsType, L"C0") == 0)
{
iType = 8;
}
else if (wcscmp(wcsType, L"by_zero") == 0)
{
iType = 7;
//.........这里部分代码省略.........
开发者ID:leowzukw,项目名称:scilab-mirror,代码行数:101,代码来源:sci_interp3d.cpp
示例11: sci_intg
/*--------------------------------------------------------------------------*/
types::Function::ReturnValue sci_intg(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
double pdA = 0;
double pdB = 0;
double pdEpsR = 1.0e-8;
double pdEpsA = 1.0e-13;
double result = 0;
double abserr = 0;
int iOne = 1;
// error message catched
std::wostringstream os;
bool bCatch = false;
// *** check the minimal number of input args. ***
if (in.size() < 3 || in.size() > 5)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "intg", 3);
return types::Function::Error;
}
// *** check number of output args ***
if (_iRetCount > 3)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "intg", 3);
return types::Function::Error;
}
// *** check type of input args and get it. ***
// A
if (in[0]->isDouble() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: A matrix expected.\n"), "intg", 1);
return types::Function::Error;
}
types::Double* pDblA = in[0]->getAs<types::Double>();
if (pDblA->isScalar() == false)
{
Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), "intg", 1);
return types::Function::Error;
}
pdA = pDblA->get(0);
if (ISNAN(pdA) || C2F(vfinite)(&iOne , &pdA) == false)
{
Scierror(264, _("%s: Wrong type for input argument #%d: Must not contain NaN or Inf.\n"), "intg", 1);
return types::Function::Error;
}
// B
if (in[1]->isDouble() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: A matrix expected.\n"), "intg", 2);
return types::Function::Error;
}
types::Double* pDblB = in[1]->getAs<types::Double>();
if (pDblB->isScalar() == false)
{
Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), "intg", 2);
return types::Function::Error;
}
pdB = pDblB->get(0);
if (ISNAN(pdB) || C2F(vfinite)(&iOne , &pdB) == false)
{
Scierror(264, _("%s: Wrong type for input argument #%d: Must not contain NaN or Inf.\n"), "intg", 1);
return types::Function::Error;
}
// function
DifferentialEquationFunctions deFunctionsManager(L"intg");
DifferentialEquation::addDifferentialEquationFunctions(&deFunctionsManager);
if (in[2]->isCallable())
{
types::Callable* pCall = in[2]->getAs<types::Callable>();
deFunctionsManager.setFFunction(pCall);
// check function
double t = 1;
double ret = intg_f(&t);
/* if (ret == 0)
{
Scierror(50, _("%s: Argument #%d: Variable returned by scilab argument function is incorrect.\n"), "intg", 3);
DifferentialEquation::removeDifferentialEquationFunctions();
return types::Function::Error;
}*/
}
else if (in[2]->isString())
{
bool bOK = false;
//.........这里部分代码省略.........
开发者ID:opencollab,项目名称:scilab,代码行数:101,代码来源:sci_intg.cpp
示例12: sci_feval
/*--------------------------------------------------------------------------*/
types::Function::ReturnValue sci_feval(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
int iPos = 0;
int nn = 1;
int iErr = 0;
//input
types::Double* pDblX = NULL;
types::Double* pDblY = NULL;
// output
types::Double* pDblOut = NULL;
// error message catched
std::wostringstream os;
bool bCatch = false;
// *** check the minimal number of input args. ***
if (in.size() < 2 || in.size() > 3)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d to %d expected.\n"), "feval", 2, 3);
return types::Function::Error;
}
// *** check number of output args according the methode. ***
if (_iRetCount > 1)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "feval", 1);
return types::Function::Error;
}
// *** check type of input args and get it. ***
// X
if (in[iPos]->isDouble() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d : A real matrix expected.\n"), "feval", iPos + 1);
return types::Function::Error;
}
pDblX = in[iPos]->getAs<types::Double>();
if (pDblX->isComplex())
{
Scierror(999, _("%s: Wrong type for input argument #%d : A real matrix expected.\n"), "feval", iPos + 1);
return types::Function::Error;
}
iPos++;
// Y
if (in.size() == 3)
{
if (in[iPos]->isDouble() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d : A real matrix expected.\n"), "feval", iPos + 1);
return types::Function::Error;
}
pDblY = in[iPos]->getAs<types::Double>();
if (pDblY->isComplex())
{
Scierror(999, _("%s: Wrong type for input argument #%d : A real matrix expected.\n"), "feval", iPos + 1);
return types::Function::Error;
}
iPos++;
nn = 2;
}
// function
DifferentialEquationFunctions deFunctionsManager(L"feval");
DifferentialEquation::addDifferentialEquationFunctions(&deFunctionsManager);
if (in[iPos]->isCallable())
{
types::Callable* pCall = in[iPos]->getAs<types::Callable>();
deFunctionsManager.setFFunction(pCall);
}
else if (in[iPos]->isString())
{
bool bOK = false;
types::String* pStr = in[iPos]->getAs<types::String>();
bOK = deFunctionsManager.setFFunction(pStr);
if (bOK == false)
{
char* pst = wide_string_to_UTF8(pStr->get(0));
Scierror(50, _("%s: Subroutine not found: %s\n"), "feval", pst);
FREE(pst);
DifferentialEquation::removeDifferentialEquationFunctions();
return types::Function::Error;
}
}
else if (in[iPos]->isList())
{
types::List* pList = in[iPos]->getAs<types::List>();
if (pList->getSize() == 0)
{
Scierror(50, _("%s: Argument #%d : Subroutine not found in list: %s\n"), "feval", iPos + 1, "(string empty)");
DifferentialEquation::removeDifferentialEquationFunctions();
return types::Function::Error;
}
//.........这里部分代码省略.........
开发者ID:FOSSEE-Internship,项目名称:scilab,代码行数:101,代码来源:sci_feval.cpp
示例13: sci_inv
types::Function::ReturnValue sci_inv(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
types::Double* pDbl = NULL;
double* pData = NULL;
int ret = 0;
if (in.size() != 1)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "inv", 1);
return types::Function::Error;
}
if ((in[0]->isDouble() == false))
{
std::wstring wstFuncName = L"%" + in[0]->getShortTypeStr() + L"_inv";
return Overload::call(wstFuncName, in, _iRetCount, out);
}
pDbl = in[0]->getAs<types::Double>()->clone()->getAs<types::Double>(); // input data will be modified
if (pDbl->getRows() != pDbl->getCols())
{
Scierror(20, _("%s: Wrong type for argument %d: Square matrix expected.\n"), "inv", 1);
return types::Function::Error;
}
if (pDbl->getRows() == 0)
{
out.push_back(types::Double::Empty());
return types::Function::OK;
}
if (pDbl->isComplex())
{
/* c -> z */
pData = (double*)oGetDoubleComplexFromPointer( pDbl->getReal(), pDbl->getImg(), pDbl->getSize());
}
else
{
pData = pDbl->getReal();
}
if (pDbl->getCols() == -1)
{
pData[0] = 1. / pData[0];
}
else
{
double dblRcond;
ret = iInvertMatrixM(pDbl->getRows(), pDbl->getCols(), pData, pDbl->isComplex(), &dblRcond);
if (pDbl->isComplex())
{
/* z -> c */
vGetPointerFromDoubleComplex((doublecomplex*)pData, pDbl->getSize(), pDbl->getReal(), pDbl->getImg());
vFreeDoubleComplexFromPointer((doublecomplex*)pData);
}
if (ret == -1)
{
if (getWarningMode())
{
sciprint(_("Warning :\n"));
sciprint(_("matrix is close to singular or badly scaled. rcond = %1.4E\n"), dblRcond);
}
}
}
if (ret == 19)
{
Scierror(19, _("%s: Problem is singular.\n"), "inv");
return types::Function::Error;
}
out.push_back(pDbl);
return types::Function::OK;
}
开发者ID:FOSSEE-Internship,项目名称:scilab,代码行数:76,代码来源:sci_inv.cpp
示例14: sci_mopen
types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
int iErr = 0;
int iID = 0;
wchar_t* pstFilename = NULL;
const wchar_t* pstMode = L"rb";
int iSwap = 0;
//check output parameters
if (_iRetCount != 1 && _iRetCount != 2)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "mopen", 1, 2);
return types::Function::Error;
}
//check input parameters
if (in.size() >= 1)
{
//filename
if (in[0]->isString() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), "mopen", 1);
return types::Function::Error;
}
types::String* pS1 = in[0]->getAs<types::String>();
if (pS1->getSize() != 1)
{
Scierror(999, _("%s: Wrong size for input argument #%d: string expected.\n"), "mopen" , 1);
return types::Function::Error;
}
pstFilename = expandPathVariableW(pS1->get(0));
if (in.size() >= 2)
{
//mode
if (in[1]->isString() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), "mopen", 2);
return types::Function::Error;
}
types::String* pS2 = in[1]->getAs<types::String>();
if (pS2->getSize() != 1)
{
Scierror(999, _("%s: Wrong size for input argument #%d: string expected.\n"), "mopen" , 2);
return types::Function::Error;
}
pstMode = pS2->get(0);
if (in.size() >= 3)
{
//swap
if (in[2]->isDouble() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d: An integer expected.\n"), "mopen" , 3);
return types::Function::Error;
}
types::Double* pD3 = in[2]->getAs<types::Double>();
if (pD3->getSize() != 1 || pD3->isComplex())
{
Scierror(999, _("%s: Wrong size for input argument #%d: An integer expected.\n"), "mopen", 3);
return types::Function::Error;
}
//if value == 0 set swap to 0 otherwise let to 1
if (pD3->getReal(0, 0) == 0)
{
iSwap = 0;
}
if (in.size() >= 4)
{
Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "mopen" , 1, 3);
return types::Function::Error;
}
}
}
}
else
{
Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "mopen" , 1, 3);
return types::Function::Error;
}
wchar_t* pwstTemp = (wchar_t*)MALLOC(sizeof(wchar_t) * (PATH_MAX * 2));
get_full_pathW(pwstTemp, (const wchar_t*)pstFilename, PATH_MAX * 2);
iErr = mopen(pwstTemp, pstMode, iSwap, &iID);
if (iErr != MOPEN_NO_ERROR)
{
//mange file open errors
if (_iRetCount == 1)
{
switch (iErr)
{
case MOPEN_CAN_NOT_OPEN_FILE:
//.........这里部分代码省略.........
开发者ID:adrianafs,项目名称:scilab,代码行数:101,代码来源:sci_mopen.cpp
示例15: sci_newest
types::Function::ReturnValue sci_newest(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
int iRet = 0;
int iNbrString = 0;
wchar_t** pwcsStringInput = NULL;
if (in.size() == 0)
{
out.push_back(types::Double::Empty());
return types::Function::OK;
}
if (in.size() == 1)
{
if (in[0]->isString() == FALSE)
{
if (in[0]->getAs<types::GenericType>()->getSize() == 0)
{
out.push_back(types::Double::Empty());
return types::Function::OK;
}
else
{
Scierror(999, _("%s: Wrong type for input argument #%d: A String(s) expected.\n"), "newest", 1);
return types::Function::Error;
}
}
if (in[0]->getAs<types::String>()->isScalar())
{
out.push_back(new types::Double(1));
return types::Function::OK;
}
else
{
int size = in[0]->getAs<types::String>()->getSize();
pwcsStringInput = (wchar_t**)MALLOC(size * sizeof(wchar_t*));
for (iNbrString = 0; iNbrString < size; iNbrString++)
{
pwcsStringInput[iNbrString] = in[0]->getAs<types::String>()->get(iNbrString);
}
iRet = newest(pwcsStringInput, iNbrString);
FREE(pwcsStringInput);
out.push_back(new types::Double(iRet));
}
}
else
{
int size = (int)in.size();
pwcsStringInput = (wchar_t**)MALLOC(size * sizeof(wchar_t*));
for (iNbrString = 0; iNbrString < size; iNbrString++)
{
if (in[iNbrString]->isString() == FALSE)
{
FREE(pwcsStringInput);
Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "newest", iNbrString + 1);
return types::Function::Error;
}
pwcsStringInput[iNbrString] = in[iNbrString]->getAs<types::String>()->get(0);
}
if (in[1]->getAs<types::String>()->isScalar() == false)
{
FREE(pwcsStringInput);
Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), "newest", 2);
return types::Function::Error;
}
iRet = newest(pwcsStringInput, iNbrString);
FREE(pwcsStringInput);
out.push_back(new types::Double((double)iRet));
}
return types::Function::OK;
}
开发者ID:scitao,项目名称:scilab,代码行数:76,代码来源:sci_newest.cpp
示例16: sci_abs
/*--------------------------------------------------------------------------*/
types::Function::ReturnValue sci_abs(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
if (in.size() != 1)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "abs", 1);
return types::Function::Error;
}
if (_iRetCount > 1)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "abs", 1);
return types::Function::Error;
}
switch (in[0]->getType())
{
case types::InternalType::ScilabDouble:
{
api_scilab::Double* pDblIn = api_scilab::getAsDouble(in[0]);
api_scilab::Double* pDblOut = new api_scilab::Double(pDblIn->getDims(), pDblIn->getDimsArray());
double* pdblInR = pDblIn->get();
double* pdblInI = pDblIn->getImg();
double* pdblOut = pDblOut->get();
int size = pDblIn->getSize();
if (pDblIn->isComplex())
{
for (int i = 0; i < size; i++)
{
if (ISNAN(pdblInR[i]))
{
pdblOut[i] = pdblInR[i];
}
else if (ISNAN(pdblInI[i]))
{
pdblOut[i] = pdblInI[i];
}
else
{
pdblOut[i] = dabsz(pdblInR[i], pdblInI[i]);
}
}
}
else
{
for (int i = 0; i < size; i++)
{
if (ISNAN(pdblInR[i]))
{
pdblOut[i] = pdblInR[i];
}
else
{
pdblOut[i] = std::fabs(pdblInR[i]);
}
}
}
out.push_back(api_scilab::getReturnVariable(pDblOut));
delete pDblOut;
delete pDblIn;
break;
}
case types::InternalType::ScilabPolynom:
{
types::Polynom* pPolyIn = in[0]->getAs<types::Polynom>();
types::Polynom* pPolyOut = new types::Polynom(pPolyIn->getVariableName(), pPolyIn->getDims(), pPolyIn->getDimsArray());
double* data = NULL;
if (pPolyIn->isComplex())
{
for (int i = 0; i < pPolyIn->getSize(); i++)
{
int rank = pPolyIn->get(i)->getRank();
types::SinglePoly* pSP = new types::SinglePoly(&data, rank);
for (int j = 0; j < rank + 1; j++)
{
data[j] = dabsz(pPolyIn->get(i)->get()[j], pPolyIn->get(i)->getImg()[j]);
}
pPolyOut->set(i, pSP);
delete pSP;
pSP = NULL;
}
}
else
{
for (int i = 0; i < pPolyIn->getSize(); i++)
{
int rank = pPolyIn->get(i)->getRank();
types::SinglePoly* pSP = new types::SinglePoly(&data, rank);
for (int j = 0; j < rank + 1; j++)
{
data[j] = dabss(pPolyIn->get(i)->get()[j]);
}
pPolyOut->set(i, pSP);
//.........这里部分代码省略.........
开发者ID:leowzukw,项目名称:scilab-mirror,代码行数:101,代码来源:sci_abs.cpp
示例17: sci_diag
/*--------------------------------------------------------------------------*/
types::Function::ReturnValue sci_diag(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
int iStartPos = 0;
if (in.size() < 1 || in.size() > 2)
{
Scierror(77, _("%s: Wrong number of input argument(s): %d to %d expected.\n"), "diag", 1, 2);
return types::Function::Error;
}
if (_iRetCount > 1)
{
Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "diag", 1);
return types::Function::Error;
}
if (in[0]->isGenericType() == false)
{
ast::ExecVisitor exec;
std::wstring wstFuncName = L"%" + in[0]->getShortTypeStr() + L"_diag";
return Overload::call(wstFuncName, in, _iRetCount, out, &exec);
}
if (in[0]->getAs<types::GenericType>()->getDims() > 2)
{
ast::ExecVisitor exec;
std::wstring wstFuncName = L"%" + in[0]->getShortTypeStr() + L"_diag";
return Overload::call(wstFuncName, in, _iRetCount, out, &exec);
}
if (in.size() == 2)
{
if (in[1]->isDouble() == false)
{
Scierror(999, _("%s: Wrong type for input argument #%d : A real scalar expected.\n"), "diag", 2);
return types::Function::Error;
}
types::Double* pDbl = in[1]->getAs<types::Double>();
if (pDbl->isScalar() == false || pDbl->isComplex())
{
Scierror(999, _("%s: Wrong type for input argument #%d : A real scalar expected.\n"), "diag", 2);
return types::Function::Error;
}
iStartPos = static_cast<int>(pDbl->get(0));
}
switch (in[0]->getType())
{
case types::InternalType::ScilabDouble :
out.push_back(diag<types::Double, double>(in[0]->getAs<types::Double>(), iStartPos));
break;
case types::InternalType::ScilabPolynom :
out.push_back(diag(in[0]->getAs<types::Polynom>(), iStartPos));
break;
case types::InternalType::ScilabString :
out.push_back(diag(in[0]->getAs<types::String>(), iStartPos));
break;
case types::InternalType::ScilabBool :
out.push_back(diag<types::Bool, int>(in[0]->getAs<types::Bool>(), iStartPos));
break;
case types::InternalType::ScilabInt8 :
out.push_back(diag<types::Int8, char>(in[0]->getAs<types::Int8>(), iStartPos));
break;
case types::InternalType::ScilabInt16 :
out.push_back(diag<types::Int16, short>(in[0]->getAs<types::Int16>(), iStartPos));
break;
case types::InternalType::ScilabInt32 :
out.push_back(diag<types::Int32, int>(in[0]->getAs<types::Int32>(), iStartPos));
break;
case types::InternalType::ScilabInt64 :
out.push_back(diag<types::Int64, long long>(in[0]->getAs<types::Int64>(), iStartPos));
break;
case types::InternalType::ScilabUInt8 :
out.push_back(diag<types::UInt8, unsigned char>(in[0]->getAs<types::UInt8>(), iStartPos));
break;
case types::InternalType::ScilabUInt16 :
out.push_back(diag<types::UInt16, unsigned short>(in[0]->getAs<types::UInt16>(), iStartPos));
break;
case types::InternalType::ScilabUInt32 :
out.push_back(diag<types::UInt32, unsigned int>(in[0]->getAs<types::UInt32>(), iStartPos));
break;
case types::InternalType::ScilabUInt64 :
out.push_back(diag<types::UInt64, unsigned long long>(in[0]->getAs<types::UInt64>(), iStartPos));
break;
default :
{
ast::ExecVisitor exec;
std::wstring wstFuncName = L"%" + in[0]->getShortTypeStr() + L"_diag";
return Overload::call(wstFuncName, in, _iRetCount, out, &exec);
}
}
return types::Function::OK;
}
开发者ID:scitao,项目名称:scilab,代码行数:98,代码来源:sci_diag.cpp
示例18: sci_file_no_rhs
/*--------------------------------------------------------------------------*/
types::Function::ReturnValue sci_file_no_rhs(types::typed_list &in, int _iRetCount, types::typed_list &out)
{
int iCount = FileManager::getOpenedCount();
if (iCount == 0)
{
for (int i = 0 ; i < _iRetCount ; i++)
{
out.push_back(types::Double::Empty());
}
return types::Function::OK;
}
int* piIds = FileManager::getIDs();
if (piIds)
{
types::Double *pD = new types::Double(1, iCount);
pD->setInt(piIds);
out.push_back(pD);
delete[] piIds;
}
if (_iRetCount > 1) /*types*/
{
wchar_t** pstTypes = FileManager::getTypesAsString();
if (pstTypes != NULL)
{
types::String* pS = new types::String(1, iCount);
pS->set(pstTypes);
out.push_back(pS);
for (int i = 0 ; i < iCount ; i++)
{
delete[] pstTypes[i];
}
delete[] pstTypes;
}
}
if (_iRetCount > 2) /*names*/
{
wchar_t** pstNames = FileManager::getFilenames();
if (pstNames != NULL)
{
types::String* pS = new types::String(1, iCount);
pS->set(pstNames);
out.push_back(pS);
for (int i = 0 ; i < iCount ; i++)
{
delete[] pstNames[i];
}
delete[] pstNames;
}
}
if (_iRetCount > 3) /* mod */
{
double* pdblModes = FileManager::getModes();
if (pdblModes != NULL)
{
types::Double* pD = new types::Double(1, iCount);
pD->set(pdblModes);
out.push_back(pD);
delete[] pdblModes;
}
}
if (_iRetCount > 4) /* swap */
{
double* pdblSwaps = FileManager::getSwaps();
if (pdblSwaps != NULL)
{
types::Double* pD = new types::Double(1, iCount);
pD->set(pdblSwaps);
out.push_back(pD);
delete[] pdblSwaps;
}
}
return types::Function::OK;
}
开发者ID:FOSSEE-Internship,项目名称:scilab,代码行数:80,代码来源:sci_file.cpp
|
请发表评论