diff options
author | clyne <clyne@bitgloo.com> | 2019-09-03 18:17:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-03 18:17:51 -0400 |
commit | ec1d57aeadbd0f34616eeec8f1a922ca61b90085 (patch) | |
tree | 9d2233f2437b8e85d151f9610b1a147310b9c13e /lib/cereal/README.md | |
parent | 0b3d24c4295bb89eb4ce3f91163cabd64d0ca6e2 (diff) | |
parent | 95cc88ad5f6c2abb4890d00a57ae4ad0db030e9b (diff) |
Merge pull request #1 from tcsullivan/save-load
Save load looks good
Diffstat (limited to 'lib/cereal/README.md')
-rw-r--r-- | lib/cereal/README.md | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/cereal/README.md b/lib/cereal/README.md new file mode 100644 index 0000000..1001f50 --- /dev/null +++ b/lib/cereal/README.md @@ -0,0 +1,85 @@ +cereal - A C++11 library for serialization +========================================== + +<img src="http://uscilab.github.io/cereal/assets/img/cerealboxside.png" align="right"/><p>cereal is a header-only C++11 serialization library. cereal takes arbitrary data types and reversibly turns them into different representations, such as compact binary encodings, XML, or JSON. cereal was designed to be fast, light-weight, and easy to extend - it has no external dependencies and can be easily bundled with other code or used standalone.</p> + +### cereal has great documentation + +Looking for more information on how cereal works and its documentation? Visit [cereal's web page](http://USCiLab.github.com/cereal) to get the latest information. + +### cereal is easy to use + +Installation and use of of cereal is fully documented on the [main web page](http://USCiLab.github.com/cereal), but this is a quick and dirty version: + +* Download cereal and place the headers somewhere your code can see them +* Write serialization functions for your custom types or use the built in support for the standard library cereal provides +* Use the serialization archives to load and save data + +```cpp +#include <cereal/types/unordered_map.hpp> +#include <cereal/types/memory.hpp> +#include <cereal/archives/binary.hpp> +#include <fstream> + +struct MyRecord +{ + uint8_t x, y; + float z; + + template <class Archive> + void serialize( Archive & ar ) + { + ar( x, y, z ); + } +}; + +struct SomeData +{ + int32_t id; + std::shared_ptr<std::unordered_map<uint32_t, MyRecord>> data; + + template <class Archive> + void save( Archive & ar ) const + { + ar( data ); + } + + template <class Archive> + void load( Archive & ar ) + { + static int32_t idGen = 0; + id = idGen++; + ar( data ); + } +}; + +int main() +{ + std::ofstream os("out.cereal", std::ios::binary); + cereal::BinaryOutputArchive archive( os ); + + SomeData myData; + archive( myData ); + + return 0; +} +``` + +### cereal has a mailing list + +Either get in touch over <a href="mailto:cerealcpp@googlegroups.com">email</a> or [on the web](https://groups.google.com/forum/#!forum/cerealcpp). + + + +## cereal has a permissive license + +cereal is licensed under the [BSD license](http://opensource.org/licenses/BSD-3-Clause). + +## cereal build status + +* develop : [](https://travis-ci.org/USCiLab/cereal) +[](https://ci.appveyor.com/project/AzothAmmo/cereal/branch/develop) + +--- + +Were you looking for the Haskell cereal? Go <a href="https://github.com/GaloisInc/cereal">here</a>. |