#include "GenericGF.h"
namespace ZXing {
const GenericGF &
GenericGF::AztecData12()
{
static GenericGF inst(0x1069, 4096, 1); return inst;
}
const GenericGF &
GenericGF::AztecData10()
{
static GenericGF inst(0x409, 1024, 1); return inst;
}
const GenericGF &
GenericGF::AztecData6()
{
static GenericGF inst(0x43, 64, 1); return inst;
}
const GenericGF &
GenericGF::AztecParam()
{
static GenericGF inst(0x13, 16, 1); return inst;
}
const GenericGF &
GenericGF::QRCodeField256()
{
static GenericGF inst(0x011D, 256, 0); return inst;
}
const GenericGF &
GenericGF::DataMatrixField256()
{
static GenericGF inst(0x012D, 256, 1); return inst;
}
const GenericGF &
GenericGF::AztecData8()
{
static const GenericGF inst(0x012D, 256, 1); return inst;
}
const GenericGF &
GenericGF::MaxiCodeField64()
{
static const GenericGF inst(0x43, 64, 1); return inst;
}
GenericGF::GenericGF(int primitive, int size, int b) :
_size(size),
_generatorBase(b)
{
#ifdef ZX_REED_SOLOMON_USE_MORE_MEMORY_FOR_SPEED
_expTable.resize(size * 2, 0);
#else
_expTable.resize(size, 0);
#endif
_logTable.resize(size, 0);
int x = 1;
for (int i = 0; i < size; ++i) {
_expTable[i] = x;
x *= 2; if (x >= size) {
x ^= primitive;
x &= size - 1;
}
}
#ifdef ZX_REED_SOLOMON_USE_MORE_MEMORY_FOR_SPEED
for (int i = size - 1; i < size * 2; ++i)
_expTable[i] = _expTable[i - (size - 1)];
#endif
for (int i = 0; i < size - 1; ++i)
_logTable[_expTable[i]] = i;
}
}