Дружественный текстовый формат.
От: Chorkov Россия  
Дата: 25.11.16 16:03
Оценка:
Есть некоторая структура данных, с векторами, map-ами, и опциональными переменными (boost::optional).
Требуется составить удобный для пользователя формат заполнения этой структуры.
Это должен быть легко прозрачный для пользователя текстовый формат.
Желательно, JSON-подобный, но подойдет и xml (если не слишком перегруженный).

Попробовал Boost.Serialize в xml архов:
boost::optional<std::string> comment;
в xml превращается в
<comment class_id="0" tracking_level="0" version="0">
    <initialized>1</initialized>
    <item_version>0</item_version>
    <value>comment text</value>
</comment>

, что совершенно неприемлемо. Можно ведь было ограничиться одним атрибутом, отсутствующим, если поле не задано!

Есть ли готовые реализации архивов, подобного случая?
Или использование boost.serialize, в принципе плохая идея и нужен другой подход?
Re: Дружественный текстовый формат.
От: andrey.desman  
Дата: 25.11.16 16:08
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>Есть ли готовые реализации архивов, подобного случая?


Так а собственно, чем JSON или Lua не устраивают?
Re[2]: Дружественный текстовый формат.
От: Chorkov Россия  
Дата: 25.11.16 16:10
Оценка:
Здравствуйте, andrey.desman, Вы писали:

AD>Здравствуйте, Chorkov, Вы писали:


C>>Есть ли готовые реализации архивов, подобного случая?


AD>Так а собственно, чем JSON или Lua не устраивают?


В boost.serialize есть готовый JSON архив?
Re[3]: Дружественный текстовый формат.
От: so5team https://stiffstream.com
Дата: 25.11.16 16:15
Оценка:
Здравствуйте, Chorkov, Вы писали:

AD>>Так а собственно, чем JSON или Lua не устраивают?


C>В boost.serialize есть готовый JSON архив?


Можно взять RapidJSON и сверху json_dto, получится почти как в Boost.
Re[3]: Дружественный текстовый формат.
От: andrey.desman  
Дата: 25.11.16 16:18
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>В boost.serialize есть готовый JSON архив?


А, не понял, что вопрос именно про boost::serialize.
Re: Дружественный текстовый формат.
От: Kswapd Россия  
Дата: 25.11.16 18:55
Оценка:
C>Или использование boost.serialize, в принципе плохая идея и нужен другой подход?

Да, лучше встроить интерпретатор подходящего скриптового языка. Хинт: попытки использования XML или другого подобного формата для записи сложных данных в текстовом формате часто приводят в итоге к "наколенной" неэффективной реализации некоторого уродливого языка программирования; лучше сразу скипнуть этот шаг. Подробнее см. у Эрика Рэймонда.
Re: Дружественный текстовый формат.
От: Ops Россия  
Дата: 26.11.16 12:20
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>Или использование boost.serialize, в принципе плохая идея и нужен другой подход?


Не совсем понял задачу, property_tree не пойдет?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Дружественный текстовый формат.
От: swingus  
Дата: 27.11.16 01:47
Оценка: +1
Если не лень адаптировать структуру под boost.fusion sequence, выписать форму Бэкуса-Наура (которая станет qi грамматикой), то подойдёт boost.spirit. Там всё можно настроить.

Здравствуйте, Chorkov, Вы писали:

C>Есть некоторая структура данных, с векторами, map-ами, и опциональными переменными (boost::optional).

C>Требуется составить удобный для пользователя формат заполнения этой структуры.
C>Это должен быть легко прозрачный для пользователя текстовый формат.
C>Желательно, JSON-подобный, но подойдет и xml (если не слишком перегруженный).
Отредактировано 27.11.2016 1:52 swingus . Предыдущая версия .
Re: Дружественный текстовый формат.
От: flаt  
Дата: 28.11.16 09:22
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>Требуется составить удобный для пользователя формат заполнения этой структуры.


JSON? YAML?
INI, TOML (чуть сложнее)

Самый простой и дружественный это conf.
Re[3]: Дружественный текстовый формат.
От: uzhas Ниоткуда  
Дата: 28.11.16 10:04
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>В boost.serialize есть готовый JSON архив?


забей на boost.serialize, у него другая ниша
возьми любой json парсер. Json гораздо комфортнее для чтения и записи людьми, в частности, из-за встроенной поддержки массивов
Отредактировано 28.11.2016 10:06 uzhas . Предыдущая версия .
Re[4]: Дружественный текстовый формат.
От: _NN_ www.nemerleweb.com
Дата: 28.11.16 18:29
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, Chorkov, Вы писали:


C>>В boost.serialize есть готовый JSON архив?


U>забей на boost.serialize, у него другая ниша

U>возьми любой json парсер. Json гораздо комфортнее для чтения и записи людьми, в частности, из-за встроенной поддержки массивов

Только желательно завестись редактором поддерживающим схему для JSON если писать вручную придётся.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Дружественный текстовый формат.
От: Mr.Delphist  
Дата: 29.11.16 06:32
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Да, лучше встроить интерпретатор подходящего скриптового языка. Хинт: попытки использования XML или другого подобного формата для записи сложных данных в текстовом формате часто приводят в итоге к "наколенной" неэффективной реализации некоторого уродливого языка программирования; лучше сразу скипнуть этот шаг. Подробнее см. у Эрика Рэймонда.


А какая именно книга/статья имеется ввиду? "Искусство программирования для Unix"?
Re[3]: Дружественный текстовый формат.
От: Kswapd Россия  
Дата: 29.11.16 08:38
Оценка:
MD>А какая именно книга/статья имеется ввиду? "Искусство программирования для Unix"?

Да. Там собрано много примеров хорошего дизайна программ.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.