ビットのセットを含む何らかの構造 (できればテンプレート クラス) に、任意のビット サイズの (ユーザー定義の) 型を効率的にシリアル化/非シリアル化するための C++ API を探しています。良いスタートだと思いますが、などの組み込み型を追加するための関数/演算子は含まれていません。boost::dynamic_bitset
uint8_t
uint16_t
これを次の例のように機能させたい
boost::dynamic_bitset bs;
bs.append((uint8_t)123);
bs.append((uint16_t)12345, big_endian);
ストリーム演算子は、状態依存のエンディアン動作でもサポートする必要があります。
bs << (uint8_t)(123);
bs << little_endian;
bs << (uint16_t)(12345); // serialized as little_endian
bs << big_endian;
Boost.Serialization と Boost.Endian (Boost Sandbox 内) についても知っています。そういうものをビットレベルまで拡張してほしい。
Ibellyboost::dynamic_bitset
のメンバ関数
void append(Block block);
と
template <typename BlockInputIterator>
void append(BlockInputIterator first, BlockInputIterator last);
ほとんどのユーザーにとってレベルが低すぎます。append
これらの新しい機能で再利用する必要があると思います。さらに多くの式テンプレートを最適化するには、dynamic_bitset
.