From: <le...@us...> - 2007-01-20 21:17:34
|
Revision: 216 http://svn.sourceforge.net/qcell/?rev=216&view=rev Author: lessm Date: 2007-01-20 13:17:33 -0800 (Sat, 20 Jan 2007) Log Message: ----------- - new methods in LocalFunction Modified Paths: -------------- trunk/qcell/baseheaders/LocalFunction.h trunk/qcell/basesources/Calculator.cpp trunk/qcell/basesources/LocalFunction.cpp Modified: trunk/qcell/baseheaders/LocalFunction.h =================================================================== --- trunk/qcell/baseheaders/LocalFunction.h 2007-01-20 19:56:44 UTC (rev 215) +++ trunk/qcell/baseheaders/LocalFunction.h 2007-01-20 21:17:33 UTC (rev 216) @@ -96,6 +96,9 @@ void setValuesFromString(QString values); void getArgumentsFromString(QString argString, QVector<int> &sums, QVector<int> &freeArgs); + QVector<int> indexToFreeArgs(int index); + QVector<int> indexToSums(int index); + public: LocalFunction(); @@ -148,6 +151,9 @@ int getValueAt(int index); void setValueAt(int value, int index); + QStringList rowsHeaders(void); + QStringList columnHeaders(void); + // coment for function void setComent(QString &text); QString getComent(void); Modified: trunk/qcell/basesources/Calculator.cpp =================================================================== --- trunk/qcell/basesources/Calculator.cpp 2007-01-20 19:56:44 UTC (rev 215) +++ trunk/qcell/basesources/Calculator.cpp 2007-01-20 21:17:33 UTC (rev 216) @@ -142,6 +142,7 @@ void Calculator::setLocalFunction(LocalFunction *f) { localfunction = f; + f->rowsHeaders(); } int Calculator::getTempDataSizeInByte(void) Modified: trunk/qcell/basesources/LocalFunction.cpp =================================================================== --- trunk/qcell/basesources/LocalFunction.cpp 2007-01-20 19:56:44 UTC (rev 215) +++ trunk/qcell/basesources/LocalFunction.cpp 2007-01-20 21:17:33 UTC (rev 216) @@ -271,6 +271,58 @@ } } +QVector<int> LocalFunction::indexToFreeArgs(int index) +{ + QVector<int> out; + if(freeArguments.size()>0) + { + out.resize(freeArguments.size()); + out.fill(0); + + for(int i=0;i<out.size();++i) + { + if(index<maxArgVal) + { + out[i] = index; + break; + } + else + { + out[i] = index % maxArgVal; + index /= maxArgVal; + } + } + } + return out; +} + +QVector<int> LocalFunction::indexToSums(int index) +{ + QVector<int> out; + int temp; + if(sumArguments.size()>0) + { + out.resize(sumArguments.size()); + out.fill(0); + + for(int i=0;i<out.size();++i) + { + temp = sumArguments[i].size() * (maxArgVal - 1) + 2; + if(index<temp) + { + out[i] = index; + break; + } + else + { + out[i] = index % temp; + index /= temp; + } + } + } + return out; +} + LocalFunction::LocalFunction() { functionMode = LocalFunction::SWITCH; @@ -678,6 +730,48 @@ valueTable[index] = value; } +QStringList LocalFunction::rowsHeaders(void) +{ + QStringList out; + QString temp; + int tmp; + QVector<int> calcVector; + int rows = 1; + for(int i=0;i<sumArguments.size();++i) + rows *= sumArguments[i].size() * (maxArgVal - 1) + 2; + + for(int i=0;i<rows;++i) + { + temp.clear(); + calcVector = indexToSums(i); + foreach(tmp, calcVector) + temp.append(tr("%1;").arg(tmp)); + + out<<temp; + } + return out; +} + +QStringList LocalFunction::columnHeaders(void) +{ + QStringList out; + QString temp; + int tmp; + QVector<int> calcVector; + int column = pow(maxArgVal, freeArguments.size()); + + for(int i=0;i<column;++i) + { + temp.clear(); + calcVector = indexToFreeArgs(i); + foreach(tmp, calcVector) + temp.append(tr("%1;").arg(tmp)); + + out<<temp; + } + return out; +} + void LocalFunction::setComent(QString &text) { coment = text; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |