Re[4]: YAS: Yet Another Serialization
От: PM  
Дата: 18.09.16 07:29
Оценка:
Здравствуйте, niXman, Вы писали:

Не мой комментарий, но я помню, что тоже обратил внимание на эти моменты, когда смотрел в код.

VTT>>1) большие (а в наше время не особо большие) данные молча криво обрабатываются?

X>не поняд...

Значения типа `size_t` (который может быть `uint64_t`) обрезаются до `uint32_t`

Если 8 байт для хранения нулевой дины кажется расточительным, надо смотреть на кодирование значения переменной длиной. Но есть шанс переместиться со 2-го места в середину списка в замерах скорости, к тем библиотекам, которые это уже делают.

Вообще тема длины строк и количества элементов в сериализуемых контейнерах в YAS не раскрыта. Как реагировать на строку длиной, например, 2^63?

VTT>>2) &string[0] — это реально стремно

X>иначе придется константность снимать с c_str(). какие еще варианты?

Для string::data() в С++17 есть неконстантная перегрузка. Хорошо бы добавить защиту от пустых строк:
char* data(std::string& str) { return str.empty()? nullptr : &str[0]; }


Сейчас, конечно, всё работает и так, потому что устройство строки во всех 3-х стандартных библиотеках более-менее одинаково. Но кто знает, как оно будет в будущем.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.