|
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.
|