parent
fc92e0b4a4
commit
e8bd1ac8d5
|
@ -34,8 +34,6 @@
|
||||||
|
|
||||||
using namespace qmu;
|
using namespace qmu;
|
||||||
|
|
||||||
int Calculator::iVal = -1;
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief Calculator class constructor. Make easy initialization math parser.
|
* @brief Calculator class constructor. Make easy initialization math parser.
|
||||||
|
@ -56,6 +54,9 @@ Calculator::Calculator(const VContainer *data)
|
||||||
{
|
{
|
||||||
InitCharacterSets();
|
InitCharacterSets();
|
||||||
setAllowSubexpressions(false);//Only one expression per time
|
setAllowSubexpressions(false);//Only one expression per time
|
||||||
|
|
||||||
|
SetArgSep(',');
|
||||||
|
SetDecSep('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -114,7 +115,6 @@ Calculator::Calculator(const QString &formula, bool fromUser)
|
||||||
Calculator::~Calculator()
|
Calculator::~Calculator()
|
||||||
{
|
{
|
||||||
delete [] vVarVal;
|
delete [] vVarVal;
|
||||||
Calculator::iVal = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -220,29 +220,9 @@ void Calculator::InitCharacterSets()
|
||||||
// This could as well be a function performing database queries.
|
// This could as well be a function performing database queries.
|
||||||
qreal* Calculator::AddVariable(const QString &a_szName, void *a_pUserData)
|
qreal* Calculator::AddVariable(const QString &a_szName, void *a_pUserData)
|
||||||
{
|
{
|
||||||
// I don't want dynamic allocation here, so i used this static buffer
|
|
||||||
// If you want dynamic allocation you must allocate all variables dynamically
|
|
||||||
// in order to delete them later on. Or you find other ways to keep track of
|
|
||||||
// variables that have been created implicitely.
|
|
||||||
static qreal afValBuf[100];
|
|
||||||
|
|
||||||
++iVal;
|
|
||||||
|
|
||||||
Q_UNUSED(a_szName)
|
Q_UNUSED(a_szName)
|
||||||
Q_UNUSED(a_pUserData)
|
Q_UNUSED(a_pUserData)
|
||||||
// qDebug() << "Generating new variable \""
|
|
||||||
// << a_szName << "\" (slots left: "
|
|
||||||
// << 99-iVal << ")"
|
|
||||||
// << " User data pointer is:"
|
|
||||||
// << QString::number(a_pUserData, 16);
|
|
||||||
afValBuf[iVal] = 0;
|
|
||||||
|
|
||||||
if (iVal>=99)
|
static qreal value = 0;
|
||||||
{
|
return &value;
|
||||||
throw qmu::QmuParserError( "Variable buffer overflow." );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return &afValBuf[iVal];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,9 +62,8 @@ public:
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(Calculator)
|
Q_DISABLE_COPY(Calculator)
|
||||||
qreal *vVarVal;
|
qreal *vVarVal;
|
||||||
static int iVal;
|
|
||||||
const VContainer *data;
|
const VContainer *data;
|
||||||
void InitVariables(const VContainer *data, const QMap<int, QString> &tokens, const QString &formula);
|
void InitVariables(const VContainer *data, const QMap<int, QString> &tokens, const QString &formula);
|
||||||
void InitCharacterSets();
|
void InitCharacterSets();
|
||||||
static qreal* AddVariable(const QString &a_szName, void *a_pUserData);
|
static qreal* AddVariable(const QString &a_szName, void *a_pUserData);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user