В приступе NIH синдрома прорабатываю конфигурационный формат. Нужны строки,массивы(в пределах 1 типа),целые и вещественные числа и барабанная дробь - битовые поля. Всякие json,toml,yaml,libconfig в топку. Для меня слишком имбовые да и не поддерживают нужных мне микрофичь типа использования нескольких типов разделителей для массивов для визуального разделения данных типа array[1,2,3:4,5,6]
, тегирования ключей и секций для фильтров и прочего прочего. Но вот сейчас пью чай и подумалось. Наверное есть какой-то формат который умеет в битовые поля?
Так что бы по итогу: ну вы поняли.
typedef struct
{ uint8_t a1:1;
uint8_t a2:1;
uint8_t a3:1;
uint8_t a4:1;
uint8_t a5:2;
uint8_t a6:2;
uint8_t a7:1;
}value value;
if(config_tablebit_size(cfg,"table.bits") <= sizeof(value))
{
value = config_tablebit_get(cfg,"table.bits");
}
// ну или одхренственно
uint16_t value2 = 0;
if(config_tablebit_size(cfg,"table.bits") <= sizeof(value2))
{
value = config_tablebit_get(cfg,"table.bits");
}
Просто интересно стало =) Как в таких конфигах описываются поля, мне не интересно. Мне интересно есть ли такие. И что важно, те конфиги которые на каждый бит для внутреннего представления тратят целый тип минимально нужного размера то есть на битовое поле из 8 бит тратят 8 байт -> нинада =)
UDP: Третья кружка чая допита. Чёт уже не интересно стало :D