From c1161dc0d8939814abf7da48d03b887c0aead0ff Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Sun, 1 Sep 2019 18:22:32 -0400 Subject: added cereal library --- lib/cereal/README.md | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lib/cereal/README.md (limited to 'lib/cereal/README.md') 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 +========================================== + +

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.

+ +### 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 +#include +#include +#include + +struct MyRecord +{ + uint8_t x, y; + float z; + + template + void serialize( Archive & ar ) + { + ar( x, y, z ); + } +}; + +struct SomeData +{ + int32_t id; + std::shared_ptr> data; + + template + void save( Archive & ar ) const + { + ar( data ); + } + + template + 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 email 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 : [![Build Status](https://travis-ci.org/USCiLab/cereal.png?branch=develop)](https://travis-ci.org/USCiLab/cereal) +[![Build status](https://ci.appveyor.com/api/projects/status/91aou6smj36or0vb/branch/develop?svg=true)](https://ci.appveyor.com/project/AzothAmmo/cereal/branch/develop) + +--- + +Were you looking for the Haskell cereal? Go here. -- cgit v1.2.3