本文整理汇总了C++中ObjRef::functionsString方法的典型用法代码示例。如果您正苦于以下问题:C++ ObjRef::functionsString方法的具体用法?C++ ObjRef::functionsString怎么用?C++ ObjRef::functionsString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ObjRef
的用法示例。
在下文中一共展示了ObjRef::functionsString方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: update
//.........这里部分代码省略.........
parameterType = CellmlFileRuntimeParameter::Floating;
break;
case iface::cellml_services::LOCALLY_BOUND:
parameterType = CellmlFileRuntimeParameter::LocallyBound;
break;
}
// Keep track of our computation target, should its type be of interest
if ( (parameterType != CellmlFileRuntimeParameter::Floating)
&& (parameterType != CellmlFileRuntimeParameter::LocallyBound)) {
CellmlFileRuntimeParameter *parameter = new CellmlFileRuntimeParameter(QString::fromStdWString(realVariable->name()),
computationTarget->degree(),
QString::fromStdWString(realVariable->unitsName()),
componentHierarchy(realVariable),
parameterType,
computationTarget->assignedIndex());
if (parameterType == CellmlFileRuntimeParameter::Voi)
mVariableOfIntegration = parameter;
if (!hasComponentImports || (realVariable == mainVariable))
mParameters << parameter;
}
}
std::sort(mParameters.begin(), mParameters.end(), sortParameters);
// Generate the model code
QString modelCode = QString();
QString functionsString = QString::fromStdWString(genericCodeInformation->functionsString());
if (!functionsString.isEmpty()) {
// We will need to solve at least one NLA system
mAtLeastOneNlaSystem = true;
modelCode += "struct rootfind_info\n"
"{\n"
" double aVOI;\n"
"\n"
" double *aCONSTANTS;\n"
" double *aRATES;\n"
" double *aSTATES;\n"
" double *aALGEBRAIC;\n"
"\n"
" int *aPRET;\n"
"};\n"
"\n"
"extern void doNonLinearSolve(char *, void (*)(double *, double *, void*), double *, int *, int, void *);\n"
"\n"
+functionsString.replace("do_nonlinearsolve(", QString("doNonLinearSolve(\"%1\", ").arg(address()))
+"\n";
// Note: we rename do_nonlinearsolve() to doNonLinearSolve() because
// CellML's CIS service already defines do_nonlinearsolve(), yet
// we want to use our own non-linear solve routine defined in our
// Compiler plugin. Also, we add a new parameter to all our calls
// to doNonLinearSolve() so that doNonLinearSolve() can retrieve
// the correct instance of our NLA solver...
}
// Retrieve the body of the function that initialises constants and extract
示例2: generateCodeForModel
//.........这里部分代码省略.........
<< "double atan(double x);\n"
<< "double atanh(double x);\n"
<< "double asin(double x);\n"
<< "double asinh(double x);\n"
<< "double acos(double x);\n"
<< "double acosh(double x);\n"
<< "double asin(double x);\n"
<< "double asinh(double x);\n"
<< "double atan(double x);\n"
<< "double atanh(double x);\n"
<< "double ceil(double x);\n"
<< "double cos(double x);\n"
<< "double cosh(double x);\n"
<< "double tan(double x);\n"
<< "double tanh(double x);\n"
<< "double sin(double x);\n"
<< "double sinh(double x);\n"
<< "double exp(double x);\n"
<< "double floor(double x);\n"
<< "double pow(double x, double y);\n"
<< "double factorial(double x);\n"
<< "double log(double x);\n"
<< "double arbitrary_log(double x, double base);\n"
<< "double gcd_pair(double a, double b);\n"
<< "double lcm_pair(double a, double b);\n"
<< "double gcd_multi(unsigned int size, ...);\n"
<< "double lcm_multi(unsigned int size, ...);\n"
<< "double multi_min(unsigned int size, ...);\n"
<< "double multi_max(unsigned int size, ...);\n"
<< "void NR_MINIMISE(double(*func)"
"(double VOI, double *C, double *R, double *S, double *A),"
"double VOI, double *C, double *R, double *S, double *A, "
"double *V);\n";
std::wstring frag = cci->functionsString();
code << ws2s(frag);
int nAlgebraic = cci->algebraicIndexCount();
int nConstants = cci->constantIndexCount();
code << "\n\nvoid csim_rhs_routine(double VOI, double* CSIM_STATE, double* CSIM_RATE, double* CSIM_OUTPUT, "
<< "double* CSIM_INPUT)\n{\n\n"
<< "double DUMMY_ASSIGNMENT;\n"
<< "double CONSTANTS["
<< nConstants
<< "], ALGEBRAIC["
<< nAlgebraic
<< "];\n\n";
/* initConsts - all variables which aren't state variables but have
* an initial_value attribute, and any variables & rates
* which follow.
*/
code << ws2s(cci->initConstsString());
/* rates - All rates which are not static.
*/
code << ws2s(cci->ratesString());
/* variables - All variables not computed by initConsts or rates
* (i.e., these are not required for the integration of the model and
* thus only need to be called for output or presentation or similar
* purposes)
*/
code << ws2s(cci->variablesString());
// add in the setting of any outputs that are not already defined