bitstream: Quickly serialize data in C++17
If you feel like Google protocol buffers are too complex for your project, bitstreams are here for the resuce!
Reading and Writing
Bitstream are used like any other stream in C++. Just overload to the << and >> operators to (de-)serialize data. It comes with overloads for all basic STL cotainers, such as list, set, or vector, and PODs need no specialized operator at all.
const int in_value = 42; int out_value; bitstream bs; // Write the input to the string bs << in_value; // Go back to the beginning of the stream bs.move_to(0); // Write the data to the output bs >> out_value; EXPECT_TRUE(in_value, out_value);
You can easily assign a bitstream to operate on a subset of another bitstream. Use the assign() operator for that.
const std::string foo = "bar"; bitstream bs; bs << foo; // create a read only view of the data bistream view; view.assign(bs.data(), bs.size(), true);
There is no need to compile this project, it is headers-only. Just copy the bistream.h to your include directory or project.
Alternatively, you can use meson and ninja to install the header as well as build tests. You need to have google-test installed for this.
meson build cd build sudo ninja install
bistreams are used by the following projects