Здравствуйте, enji, Вы писали:
E>Здравствуйте, rsdh, Вы писали:
E>А сколько данных? Например, если сохранять в xml — можно безболезненно добавлять новые поля. Есть более компактный и шустрый аналог — protobuf. Еще можно на boost serialization посмотреть.
Данных много, гигабайт наберется. protobuf смотрел, пользовал, но тут не тот случай. Структура файла скорее похожа на образ, есть управляющие данные описывающие расположение в файле полезной информации, а есть собственно сама полезная информация (в больших объемах). Структуры в исходном сообщении по идее должны описывать расположение (смещение/размер) полезной информации в файле.
Вопрос на самом деле не про сериализацию данных, а про разные версии кода, обрабатывающего эти данные.
Есть программа с некоторым функционалом умеющая писать какой-то файл.
Есть "новая" версия этой программы с расширенным функционалом. Код этой программы насквозь отличается мелочами от предыдущей версии. Как совместить в это программе "старую" и "новую" версию?
файл -- читатель -- ядро -- писатель -- файл
В исходном сообщении я написал как я разделил версии "файл". Как быть с читателем, писателем и ядром? Мой вариант — аналогично структурам, вынести все классы-обработчики данных, имеющие какое-либо отношение к функционалу порождающему отличия в версиях, в пространства имен и использовать так
Tool::Reader::CurrentVersion::Add(Tool::FileFormat::CurrentVersion::SomeData1)
Tool::Reader::Version0::Add(Tool::FileFormat::Version0::SomeData0)
Про
boost serialization.