/*!
\page oess_1_4_0__quantity_serialization oess_1.4.0. Сохранение размерностей в потоках ввода/вывода.

В самых первых версиях ObjESSty было принято не очень удачное решение о том,
как сохранять размерности контейнеров и размеры объектов в двоичных потоках
oess_1::io. Для хранения размерности в поток \b всегда помещалось 32-х битовое
значение. Даже в случаях, когда в контейнере не было ни одного элемента, либо
всего несколько элементов (т.к. когда для сохранения размерности было
достаточно одного байта).

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

Однако, для новых задач и, возможно, новых типов сериализации, следует
учесть данную ошибку и не повторять ее впредь. Для этого в oess_1::defs
определен новый тип oess_1::defs::quantity_t для которого будут реализовываться
эффективные способы сериализации.

\section oess_1_4_0__quantity_serialization__binstream Формат хранения в двоичном потоке

Потоки oess_1::io::ibinstream_t и oess_1::io::obinstream_t используют для
представления oess_1::defs::quantity_t способ из ASN1 BER:
- если значение размерности меньше или равно 127, то значение храниться в одном
  байте;
- если значение больше 127, то первый байт хранит количество байт с двоичным
  образом размерности. При этом старший, седьмой, бит первого байта установлен
  в единицу, а биты с шестого по нулевой содержат количество байт, расположенных
  следом.

Так, если размерность равна 8, то она будет сохраненена в виде одного байта 0x08. Если размерность равна 127, то она будет сохранение в виде одного байта: 0x7f. Значение 128 будет сохранено как 0x81 0x80. Значение 256 -- 0x82 0x01 0x00.

\section oess_1_4_0__quantity_serialization__limitation Ограничения

Текущая реализация oess_1::io::ibinstream_t не может десериализовать
quantity_t для хранения которого используется больше четырех байт (без байта
длины представления), поскольку для хранения размерности используется 32-х
битовое значение.

При обнаружении такого большого значения quantity_t порождается исключение
oess_1::physic_ex_t с кодом ошибки oess_1::io::err::c_quantity_image_too_long.

*/

