Здравствуйте, bnk, Вы писали:
M>>Текстовый формат в любом случае не подходит. Различные подсистемы хотят на старте получить указатель на свою двоичную структуру, чтобы потом во время работы туда напрямую писать. M>>И конфиг хранится не во флеше, а епроме, там всего 16Кб
bnk>Так это тогда ни разу не "конфиг". RIFF (TLV) нормальный вариант, это работает десятилетиями, и проще сложно что-то придумать IMHO.
Ну, в конторе это называют конфигом, хотя да, это live-слепок, скорее, он постоянно обновляется и там много чего разного живет, как и какие-то параметры настройки, которые редко меняются, и какие-то накапливаемые за всё время жизни прибора данные.
Да, мне уже подсказали, что надо копать в сторону TLV
bnk>В тэг можно тип struct-а писать (StructX structY, etc), и номер ее версии например (X1, Y1, ну и т.п.) bnk>Чтобы проще парсить, я бы запретил изменения, только дополнения полей.
Сейчас думаю, как именам давать на автомате короткие стабильные идентификаторы. Хранить имена — слишком жирно — 10 структур по 10 полей, каждое 10 символов — это килобайт только на имена одной версии
bnk>Т.е. "Y2" это "Y1" с дополнительными полями. bnk>Тогда код код который парсит Y1 можно использовать для парсинга Y2 тоже. bnk>А если нужно поменять поле в структуре, заводишь новое. bnk>Но в принципе опционально, просто код который это парсит должен быть сложнее.
Да по идее, удалять тоже не проблема, если в новой структуре нет поля, то из старой ничего не берётся просто.
Ну, и соответственно, менять местами тоже нет проблем.