|
From: <le...@us...> - 2006-11-30 12:22:08
|
Revision: 28
http://svn.sourceforge.net/qcell/?rev=28&view=rev
Author: lessm
Date: 2006-11-30 04:21:55 -0800 (Thu, 30 Nov 2006)
Log Message:
-----------
- Neighbourhood class calculate offset address properly
- CalculationData class have new methods clearFrontBuffer_d and clearFrontBuffer_i
- Neighbourhood and CalculationData classes inherits from baseDataTypes class
Modified Paths:
--------------
trunk/qcell/baseheaders/CalculationData.h
trunk/qcell/baseheaders/Neighbourhood.h
trunk/qcell/basesources/CalculationData.cpp
trunk/qcell/basesources/Neighbourhood.cpp
Added Paths:
-----------
trunk/qcell/baseheaders/BaseDataTypes.h
Added: trunk/qcell/baseheaders/BaseDataTypes.h
===================================================================
--- trunk/qcell/baseheaders/BaseDataTypes.h (rev 0)
+++ trunk/qcell/baseheaders/BaseDataTypes.h 2006-11-30 12:21:55 UTC (rev 28)
@@ -0,0 +1,19 @@
+#ifndef _BASE_DATA_TYPES
+#define _BASE_DATA_TYPES
+
+class baseDataTypes
+{
+public:
+ enum DATA_TYPES
+ {
+ BOOL,
+ CHAR,
+ SHORT,
+ INT,
+ FLOAT,
+ DOUBLE,
+ NONE
+ };
+};
+
+#endif
\ No newline at end of file
Modified: trunk/qcell/baseheaders/CalculationData.h
===================================================================
--- trunk/qcell/baseheaders/CalculationData.h 2006-11-30 12:06:33 UTC (rev 27)
+++ trunk/qcell/baseheaders/CalculationData.h 2006-11-30 12:21:55 UTC (rev 28)
@@ -5,21 +5,10 @@
#include <QString>
#include <QDomDocument>
#include <QDomElement>
+#include "BaseDataTypes.h"
-class CalculationData
+class CalculationData : public baseDataTypes
{
-public:
- enum DATA_TYPES
- {
- BOOL,
- CHAR,
- SHORT,
- INT,
- FLOAT,
- DOUBLE,
- NONE
- };
-
private:
DATA_TYPES dataType;
int sizeX, sizeY, sizeZ, sizeT;
@@ -32,7 +21,8 @@
bool borderExist;
-protected:
+//protected:
+public:
bool resize(const char *dataPointer=NULL);
void * getAddressAt(int x, int y, int z, int t);
void * getAddressAtBackBuffer(int x, int y, int z, int t);
@@ -63,8 +53,8 @@
void setValueAt_d(double val, int x, int y, int z);
void setValueAt_d(double val, int x, int y, int z, int t);
- void setDataType(CalculationData::DATA_TYPES type = CalculationData::DATA_TYPES::CHAR);
- CalculationData::DATA_TYPES getDataType(void);
+ void setDataType(baseDataTypes::DATA_TYPES type = baseDataTypes::DATA_TYPES::CHAR);
+ baseDataTypes::DATA_TYPES getDataType(void);
int getDataSize(void);
bool resize(int x, const char *dataPointer=NULL);
@@ -105,6 +95,9 @@
void setValueAt_d_Back(double val, int x, int y);
void setValueAt_d_Back(double val, int x, int y, int z);
void setValueAt_d_Back(double val, int x, int y, int z, int t);
+
+ void clearFrontBuffer_i(int val=0);
+ void clearFrontBuffer_d(double val=0.0);
};
#endif
Modified: trunk/qcell/baseheaders/Neighbourhood.h
===================================================================
--- trunk/qcell/baseheaders/Neighbourhood.h 2006-11-30 12:06:33 UTC (rev 27)
+++ trunk/qcell/baseheaders/Neighbourhood.h 2006-11-30 12:21:55 UTC (rev 28)
@@ -5,22 +5,27 @@
#include <QVector>
#include <QDomElement>
#include <QDomDocument>
+#include "BaseDataTypes.h"
struct NContainer
{
int x, y, z, t;
- double dValue;
- int iValue;
- bool bValue;
+ struct DV
+ {
+ double dValue;
+ int iValue;
+ bool bValue;
+ }value;
int offset;
};
-class Neighbourhood
+class Neighbourhood : public baseDataTypes
{
private:
int dimension;
QVector<NContainer> neighbourVector;
+ DATA_TYPES dType;
protected:
public:
@@ -45,10 +50,11 @@
QString toXmlString();
int getNeighbourNumber(void);
bool getBoolValueOf(int index);
- int getInValueOf(int index);
+ int getIntValueOf(int index);
double getDoubleValueOf(int index);
- void calculateOffsets(int sizeX, int sizeY, int sizeZ, int sizeT, int dataSize);
+ void calculateOffsets(int sizeX, int sizeY, int sizeZ, int sizeT, baseDataTypes::DATA_TYPES type);
+ void resolveValues(const char *address);
};
Modified: trunk/qcell/basesources/CalculationData.cpp
===================================================================
--- trunk/qcell/basesources/CalculationData.cpp 2006-11-30 12:06:33 UTC (rev 27)
+++ trunk/qcell/basesources/CalculationData.cpp 2006-11-30 12:21:55 UTC (rev 28)
@@ -24,30 +24,30 @@
void * CalculationData::getAddressAt(int x, int y, int z, int t)
{
int dSize;
- if(dataType==CalculationData::DATA_TYPES::NONE)
+ if(dataType==baseDataTypes::DATA_TYPES::NONE)
return NULL;
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
dSize = 1;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
dSize = sizeof(int);
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
dSize = sizeof(short);
break;
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
dSize = sizeof(double);
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
dSize = sizeof(float);
break;
}
@@ -58,30 +58,30 @@
void * CalculationData::getAddressAtBackBuffer(int x, int y, int z, int t)
{
int dSize;
- if(dataType==CalculationData::DATA_TYPES::NONE)
+ if(dataType==baseDataTypes::DATA_TYPES::NONE)
return NULL;
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
dSize = 1;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
dSize = sizeof(int);
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
dSize = sizeof(short);
break;
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
dSize = sizeof(double);
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
dSize = sizeof(float);
break;
}
@@ -120,7 +120,7 @@
CalculationData::CalculationData()
{
- dataType = CalculationData::DATA_TYPES::NONE;
+ dataType = baseDataTypes::DATA_TYPES::NONE;
sizeX = sizeY = sizeZ = sizeT = 0;
dimension = -1;
size = -1;
@@ -131,7 +131,7 @@
CalculationData::~CalculationData()
{
- dataType = CalculationData::DATA_TYPES::NONE;
+ dataType = baseDataTypes::DATA_TYPES::NONE;
sizeX = sizeY = sizeZ = sizeT = 0;
dimension = -1;
size = -1;
@@ -151,17 +151,17 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return *((char *)getAddressAt(x, 0, 0, 0));
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return *((int *)(getAddressAt(x, 0, 0, 0)));
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return *((short *)(getAddressAt(x, 0, 0, 0)));
}
return -1;
@@ -171,17 +171,17 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return *((char *)getAddressAt(x, y, 0, 0));
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return *((int *)(getAddressAt(x, y, 0, 0)));
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return *((short *)(getAddressAt(x, y, 0, 0)));
}
return -1;
@@ -191,17 +191,17 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return *((char *)getAddressAt(x, y, z, 0));
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return *((int *)(getAddressAt(x, y, z, 0)));
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return *((short *)(getAddressAt(x, y, z, 0)));
}
return -1;
@@ -211,17 +211,17 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
return *((char *)getAddressAt(x, y, z, t));
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
return *((int *)(getAddressAt(x, y, z, t)));
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
return *((short *)(getAddressAt(x, y, z, t)));
}
return -1;
@@ -231,19 +231,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, 0, 0, 0)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, 0, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, 0, 0, 0))) = (short)val;
break;
}
@@ -253,19 +253,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, y, 0, 0)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, y, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, y, 0, 0))) = (short)val;
break;
}
@@ -275,19 +275,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, y, z, 0)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, y, z, 0))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, y, z, 0))) = (short)val;
break;
}
@@ -297,19 +297,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAt(x, y, z, t)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAt(x, y, z, t))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAt(x, y, z, t))) = (short)val;
break;
}
@@ -319,10 +319,10 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, 0, 0, 0)));
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, 0, 0, 0)));
}
return -1;
@@ -332,10 +332,10 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, y, 0, 0)));
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, y, 0, 0)));
}
return -1;
@@ -345,10 +345,10 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, y, z, 0)));
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, y, z, 0)));
}
return -1;
@@ -358,10 +358,10 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
return *((double *)(getAddressAt(x, y, z, t)));
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
return *((float *)(getAddressAt(x, y, z, t)));
}
return -1;
@@ -371,11 +371,11 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, 0, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, 0, 0, 0))) = (float)val;
break;
}
@@ -385,11 +385,11 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, y, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, y, 0, 0))) = (float)val;
break;
}
@@ -399,11 +399,11 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, y, z, 0))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, y, z, 0))) = (float)val;
break;
}
@@ -413,11 +413,11 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAt(x, y, z, t))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAt(x, y, z, t))) = (float)val;
break;
}
@@ -429,33 +429,33 @@
size = -1;
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
size = 1;
break;
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
size = sizeof(double);
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
size = sizeof(float);
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
size = sizeof(int);
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
size = sizeof(short);
break;
}
}
-CalculationData::DATA_TYPES CalculationData::getDataType(void)
+baseDataTypes::DATA_TYPES CalculationData::getDataType(void)
{
return dataType;
}
@@ -528,10 +528,10 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
return (sizeX * sizeY * sizeZ * sizeT)/8;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
switch(dimension)
{
case 1:
@@ -544,7 +544,7 @@
return sizeX * sizeY * sizeZ * sizeT;
}
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
switch(dimension)
{
case 1:
@@ -557,7 +557,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(double);
}
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
switch(dimension)
{
case 1:
@@ -570,7 +570,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(float);
}
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
switch(dimension)
{
case 1:
@@ -583,7 +583,7 @@
return sizeX * sizeY * sizeZ * sizeT * sizeof(int);
}
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
switch(dimension)
{
case 1:
@@ -794,27 +794,27 @@
}
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
element.setAttribute("ContentType", "bool");
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
element.setAttribute("ContentType", "char");
break;
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
element.setAttribute("ContentType", "double");
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
element.setAttribute("ContentType", "float");
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
element.setAttribute("ContentType", "bool");
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
element.setAttribute("ContentType", "short");
break;
}
@@ -870,22 +870,22 @@
if(element.tagName()=="Data")
{
if(element.attribute("ContentType")=="bool")
- setDataType(CalculationData::DATA_TYPES::BOOL);
+ setDataType(baseDataTypes::DATA_TYPES::BOOL);
else
if(element.attribute("ContentType")=="char")
- setDataType(CalculationData::DATA_TYPES::CHAR);
+ setDataType(baseDataTypes::DATA_TYPES::CHAR);
else
if(element.attribute("ContentType")=="double")
- setDataType(CalculationData::DATA_TYPES::DOUBLE);
+ setDataType(baseDataTypes::DATA_TYPES::DOUBLE);
else
if(element.attribute("ContentType")=="float")
- setDataType(CalculationData::DATA_TYPES::FLOAT);
+ setDataType(baseDataTypes::DATA_TYPES::FLOAT);
else
if(element.attribute("ContentType")=="int")
- setDataType(CalculationData::DATA_TYPES::INT);
+ setDataType(baseDataTypes::DATA_TYPES::INT);
else
if(element.attribute("ContentType")=="short")
- setDataType(CalculationData::DATA_TYPES::SHORT);
+ setDataType(baseDataTypes::DATA_TYPES::SHORT);
if(element.hasAttribute("t"))
resize(element.attribute("t").toInt(), element.attribute("z").toInt(), element.attribute("y").toInt(), element.attribute("x").toInt());
@@ -939,19 +939,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAtBackBuffer(x, 0, 0, 0)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAtBackBuffer(x, 0, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAtBackBuffer(x, 0, 0, 0))) = (short)val;
break;
}
@@ -961,19 +961,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAtBackBuffer(x, y, 0, 0)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAtBackBuffer(x, y, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAtBackBuffer(x, y, 0, 0))) = (short)val;
break;
}
@@ -983,19 +983,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAtBackBuffer(x, y, z, 0)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAtBackBuffer(x, y, z, 0))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAtBackBuffer(x, y, z, 0))) = (short)val;
break;
}
@@ -1005,19 +1005,19 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::BOOL:
+ case baseDataTypes::DATA_TYPES::BOOL:
size = 0;
break;
- case CalculationData::DATA_TYPES::CHAR:
+ case baseDataTypes::DATA_TYPES::CHAR:
*((char *)getAddressAtBackBuffer(x, y, z, t)) = (char)val;
break;
- case CalculationData::DATA_TYPES::INT:
+ case baseDataTypes::DATA_TYPES::INT:
*((int *)(getAddressAtBackBuffer(x, y, z, t))) = val;
break;
- case CalculationData::DATA_TYPES::SHORT:
+ case baseDataTypes::DATA_TYPES::SHORT:
*((short *)(getAddressAtBackBuffer(x, y, z, t))) = (short)val;
break;
}
@@ -1027,11 +1027,11 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAtBackBuffer(x, 0, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAtBackBuffer(x, 0, 0, 0))) = (float)val;
break;
}
@@ -1041,11 +1041,11 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAtBackBuffer(x, y, 0, 0))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAtBackBuffer(x, y, 0, 0))) = (float)val;
break;
}
@@ -1055,11 +1055,11 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAtBackBuffer(x, y, z, 0))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAtBackBuffer(x, y, z, 0))) = (float)val;
break;
}
@@ -1069,13 +1069,68 @@
{
switch(dataType)
{
- case CalculationData::DATA_TYPES::DOUBLE:
+ case baseDataTypes::DATA_TYPES::DOUBLE:
*((double *)(getAddressAtBackBuffer(x, y, z, t))) = val;
break;
- case CalculationData::DATA_TYPES::FLOAT:
+ case baseDataTypes::DATA_TYPES::FLOAT:
*((float *)(getAddressAtBackBuffer(x, y, z, t))) = (float)val;
break;
}
}
+void CalculationData::clearFrontBuffer_i(int val)
+{
+ int dSize;
+ switch(dataType)
+ {
+ case baseDataTypes::DATA_TYPES::BOOL:
+ break;
+
+ case baseDataTypes::DATA_TYPES::CHAR:
+ dSize = sizeof(char);
+ for(int i=0;i<getSizeInByte();i+=dSize)
+ {
+ *((char *)(data + i)) = (char)val;
+ }
+ break;
+
+ case baseDataTypes::DATA_TYPES::INT:
+ dSize = sizeof(int);
+ for(int i=0;i<getSizeInByte();i+=dSize)
+ {
+ *((int *)(data + i)) = val;
+ }
+ break;
+
+ case baseDataTypes::DATA_TYPES::SHORT:
+ dSize = sizeof(short);
+ for(int i=0;i<getSizeInByte();i+=dSize)
+ {
+ *((short *)(data + i)) = (short)val;
+ }
+ break;
+ }
+}
+
+void CalculationData::clearFrontBuffer_d(double val)
+{
+ int dSize;
+ switch(dataType)
+ {
+ case baseDataTypes::DATA_TYPES::DOUBLE:
+ dSize = sizeof(double);
+ for(int i=0;i<getSizeInByte();i+=dSize)
+ {
+ *((double *)(data + i)) = val;
+ }
+ break;
+ case baseDataTypes::DATA_TYPES::FLOAT:
+ dSize = sizeof(float);
+ for(int i=0;i<getSizeInByte();i+=dSize)
+ {
+ *((float *)(data + i)) = (float)val;
+ }
+ break;
+ }
+}
Modified: trunk/qcell/basesources/Neighbourhood.cpp
===================================================================
--- trunk/qcell/basesources/Neighbourhood.cpp 2006-11-30 12:06:33 UTC (rev 27)
+++ trunk/qcell/basesources/Neighbourhood.cpp 2006-11-30 12:21:55 UTC (rev 28)
@@ -14,6 +14,9 @@
{
NContainer temp;
temp.x = x;
+ temp.y = 0;
+ temp.z = 0;
+ temp.t = 0;
neighbourVector << temp;
dimension = 1;
}
@@ -23,6 +26,8 @@
NContainer temp;
temp.x = x;
temp.y = y;
+ temp.z = 0;
+ temp.t = 0;
neighbourVector << temp;
if(dimension>2)
dimension = 2;
@@ -33,6 +38,7 @@
temp.x = x;
temp.y = y;
temp.z = z;
+ temp.t = 0;
neighbourVector << temp;
if(dimension>3)
dimension = 3;
@@ -214,23 +220,100 @@
bool Neighbourhood::getBoolValueOf(int index)
{
- return neighbourVector[index].bValue;
+ return neighbourVector[index].value.bValue;
}
-int Neighbourhood::getInValueOf(int index)
+int Neighbourhood::getIntValueOf(int index)
{
- return neighbourVector[index].iValue;
+ return neighbourVector[index].value.iValue;
}
double Neighbourhood::getDoubleValueOf(int index)
{
- return neighbourVector[index].dValue;
+ return neighbourVector[index].value.dValue;
}
-void Neighbourhood::calculateOffsets(int sizeX, int sizeY, int sizeZ, int sizeT, int dataSize)
+void Neighbourhood::calculateOffsets(int sizeX, int sizeY, int sizeZ, int sizeT, baseDataTypes::DATA_TYPES type)
{
+ int dataSize=0;
+ dType = type;
+ switch(dType)
+ {
+ case baseDataTypes::DATA_TYPES::BOOL:
+ break;
+
+ case baseDataTypes::DATA_TYPES::CHAR:
+ dataSize = sizeof(char);
+ break;
+ case baseDataTypes::DATA_TYPES::DOUBLE:
+ dataSize = sizeof(double);
+ break;
+ case baseDataTypes::DATA_TYPES::FLOAT:
+ dataSize = sizeof(float);
+ break;
+ case baseDataTypes::DATA_TYPES::INT:
+ dataSize = sizeof(int);
+ break;
+ case baseDataTypes::DATA_TYPES::SHORT:
+ dataSize = sizeof(short);
+ break;
+ }
+
+ int h;
+ int a, b, c, d;
+
for(int i=0;i<neighbourVector.size();i++)
{
- neighbourVector[i].offset = dataSize * (neighbourVector[i].x + neighbourVector[i].y * sizeX + neighbourVector[i].z * sizeX * sizeY + neighbourVector[i].t * sizeX * sizeY * sizeZ);
+ a = neighbourVector[i].x;
+ b = neighbourVector[i].y;
+ c = neighbourVector[i].z;
+ d = neighbourVector[i].t;
+ h = dataSize * (neighbourVector[i].x + neighbourVector[i].y * sizeX + neighbourVector[i].z * sizeX * sizeY + neighbourVector[i].t * sizeX * sizeY * sizeZ);
+ neighbourVector[i].offset = h;
}
}
+
+void Neighbourhood::resolveValues(const char *address)
+{
+ int i;
+ switch(dType)
+ {
+ case baseDataTypes::DATA_TYPES::BOOL:
+ break;
+
+ case baseDataTypes::DATA_TYPES::CHAR:
+ for(i=0;i<neighbourVector.size();++i)
+ {
+ neighbourVector[i].value.iValue = *((char *)(address + neighbourVector[i].offset));
+ }
+ break;
+
+ case baseDataTypes::DATA_TYPES::DOUBLE:
+ for(i=0;i<neighbourVector.size();++i)
+ {
+ neighbourVector[i].value.dValue = *((double *)(address + neighbourVector[i].offset));
+ }
+ break;
+
+ case baseDataTypes::DATA_TYPES::FLOAT:
+ for(i=0;i<neighbourVector.size();++i)
+ {
+ neighbourVector[i].value.dValue = *((float *)(address + neighbourVector[i].offset));
+ }
+ break;
+
+ case baseDataTypes::DATA_TYPES::INT:
+ for(i=0;i<neighbourVector.size();++i)
+ {
+ neighbourVector[i].value.iValue = *((int *)(address + neighbourVector[i].offset));
+ }
+ break;
+
+ case baseDataTypes::DATA_TYPES::SHORT:
+ for(i=0;i<neighbourVector.size();++i)
+ {
+ neighbourVector[i].value.iValue = *((short *)(address + neighbourVector[i].offset));
+ }
+ break;
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|