
Codec factory
BasicFieldCodec *createFieldCodec(const QString &type, int count)
{
static QHash<QString, int> m;
if (m.isEmpty())
{
int i = 1;
m.insert("int8", i++);
m.insert("uint8", i++);
m.insert("int16", i++);
m.insert("uint16", i++);
m.insert("int32", i++);
m.insert("uint32", i++);
m.insert("char", i++);
m.insert("uchar", i++);
m.insert("double", i++);
}
switch (m[type])
{
case 1: return new ArrayCodec<qint8>(count);
case 2: return new ArrayCodec<quint8>(count);
case 3: return new ArrayCodec<qint16>(count);
case 4: return new ArrayCodec<quint16>(count);
case 5: return new ArrayCodec<qint32>(count);
case 6: return new ArrayCodec<quint32>(count);
case 7: return new StringCodec(count);
case 8: return new ArrayCodec<uchar>(count);
case 9: return new ArrayCodec<double>(count);
}
return NULL;
}