Don't like ads? PRO users don't see any ads ;-)

Codec factory

By: aspirinus on May 2nd, 2012  |  syntax: C++ (with QT extensions)  |  size: 0.98 KB  |  hits: 35  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. BasicFieldCodec *createFieldCodec(const QString &type, int count)
  2. {
  3.     static QHash<QString, int> m;
  4.     if (m.isEmpty())
  5.     {
  6.         int i = 1;
  7.         m.insert("int8", i++);
  8.         m.insert("uint8", i++);
  9.         m.insert("int16", i++);
  10.         m.insert("uint16", i++);
  11.         m.insert("int32", i++);
  12.         m.insert("uint32", i++);
  13.         m.insert("char", i++);
  14.         m.insert("uchar", i++);
  15.         m.insert("double", i++);
  16.     }
  17.  
  18.     switch (m[type])
  19.     {
  20.         case 1: return new ArrayCodec<qint8>(count);
  21.         case 2: return new ArrayCodec<quint8>(count);
  22.         case 3: return new ArrayCodec<qint16>(count);
  23.         case 4: return new ArrayCodec<quint16>(count);
  24.         case 5: return new ArrayCodec<qint32>(count);
  25.         case 6: return new ArrayCodec<quint32>(count);
  26.         case 7: return new StringCodec(count);
  27.         case 8: return new ArrayCodec<uchar>(count);
  28.         case 9: return new ArrayCodec<double>(count);
  29.     }
  30.  
  31.     return NULL;
  32. }