Bug fix: Adjust size of GrayToBinary-Table

Wenn wir z.B. eine Tabelle mit 4 Variablen = 16 Elementen anlegen, und
anschließend eine Datei mit mehr als 4 Variablen bearbeiten, müssen wir
die Tabelle vergrößern
This commit is contained in:
Jonny007-MKD 2014-01-07 20:29:13 +01:00
parent e61c4be44c
commit d27c3eb1f7
2 changed files with 10 additions and 1 deletions

View file

@ -6,6 +6,7 @@ using namespace std;
extern uint numElements;
uint* Tools::GrayToBinaryTable = NULL;
uint Tools::GrayToBinaryTableSize = 0;
// convert the binary representation of x to a string with the specified length
char* Tools::BinaryToChars(uint x, char length)
@ -26,14 +27,21 @@ char* Tools::BinaryToChars(uint x, char length)
uint Tools::GrayToBinary(uint x)
{
if (Tools::GrayToBinaryTable == NULL)
if (Tools::GrayToBinaryTableSize < numElements && Tools::GrayToBinaryTable != NULL)
{
delete[] Tools::GrayToBinaryTable;
Tools::InitGrayToBinaryTable();
}
else if (Tools::GrayToBinaryTable == NULL)
Tools::InitGrayToBinaryTable();
return Tools::GrayToBinaryTable[x];
}
void Tools::InitGrayToBinaryTable()
{
Tools::GrayToBinaryTable = new uint[numElements];
Tools::GrayToBinaryTableSize = numElements;
for (uint i = 0; i < numElements; i++)
Tools::GrayToBinaryTable[i] = Tools::CalcGrayToBinary(i);
}

View file

@ -9,5 +9,6 @@ public:
private:
static void InitGrayToBinaryTable();
static uint* GrayToBinaryTable;
static uint GrayToBinaryTableSize;
static uint Tools::CalcGrayToBinary(uint x);
};