Re[3]: Как поддерживать старый формат файла?
От: enji  
Дата: 22.05.12 06:11
Оценка:
Здравствуйте, rsdh, Вы писали:

R>В исходном сообщении я написал как я разделил версии "файл". Как быть с читателем, писателем и ядром? Мой вариант — аналогично структурам, вынести все классы-обработчики данных, имеющие какое-либо отношение к функционалу порождающему отличия в версиях, в пространства имен и использовать так


Возможно проще сделать конвертеры, понижающие\повышающие версию файла. Тогда основная программа всегда работает с самой новой версией, а при загрузке \ сохранении при необходимости запускается конвертер. Однако при гигабайте данных возможны тормоза. С другой стороны, конвертер запускается сравнительно редко.

Если в файле просто лежат массивы структур — можно описать содержимое структуры:

struct FieldDescr
{
  unsigned id;
  unsigned size;
  enum Type { Int, Float, Char, ... } type; 
  unsigned arraySize;
};

struct StructDescr
{
  vector<FieldDescr> fields;
};

void convert(StructDescr srcDescr, const void *src, StructDescr trgFile, void *trg)
{
  // анализирует описание полей и выполняет преобразования
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.