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