Skip to content

starius/yas

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

YAS
===

Yet Another Serialization

===
YAS is created as a replacement of boost.serialization because of its insufficient speed of serialization.
Increase speed of the YAS serialization compared with boost.serialization is:
 - ~2...3 times in release mode
 - ~6...7 times in debug mode

Yas is header only library. You do not need to link it with your code.
Yas does not depend on third-party libraries or boost.
Yas require C++11 support.

===
Supported the following types of archives:
 - binary
 - text
 - json (uncompleted)

===
Supported the following compilers:
 - GCC  : 4.7.0, 4.7.1, 4.7.2, 4.7.3, 4.8.0, 4.8.1 - x32/x64
 - MinGW: 4.7.0, 4.7.1, 4.7.2, 4.7.3, 4.8.0, 4.8.1 - x32/x64
 - Clang: 3.0, 3.1, 3.2, 3.3, 3.4 - x32/x64
 - Intel: (untested)
 - MSVC : 2008(partially), 2010, 2011 - x32/x64

===
Planned the support for the following serializable types:
 - all built-in types
 - enum`s and 'enum class'es
 - std::array
 - std::bitset
 - std::string
 - std::wstring
 - std::pair
 - std::tuple
 - std::vector
 - std::list
 - std::forward_list
 - std::map
 - std::multimap
 - std::set
 - std::multiset
 - std::unordered_map
 - std::unordered_multimap
 - std::unordered_set
 - std::unordered_multiset
 - boost::array
 - boost::unordered_map
 - boost::unordered_multimap
 - boost::unordered_set
 - boost::unordered_multiset
 - boost::fusion::pair
 - boost::fusion::tuple
 - boost::fusion::vector
 - boost::fusion::list
 - boost::fusion::map
 - boost::fusion::set
 - qbitarray
 - qbytearray
 - qchar
 - qcolor
 - qdate
 - qdatetime
 - qhash
 - qlist
 - qmap
 - qmultihash
 - qmultimap
 - qpoint
 - qpointf
 - qpolygon
 - qpolygonf
 - qqueue
 - qrect
 - qrectf
 - qregion
 - qset
 - qsize
 - qsizef
 - qstack
 - qstring
 - qstringlist
 - qtime
 - qurl
 - quuid
 - qvariant
 - qvarianthash
 - qvariantlist
 - qvariantmap
 - qvector
 - qvector2d
 - qvector3d
 - qvector4d
 - yas::intrusive_buffer [1] (only save)
 - yas::shared_buffer [2]

Currently supports all types except Qt types.

===
If you use YAS in your project - please tell to the author with the short description of the reasons and advantages in comparison with other serialization libraries ;)

===
[1] https://github.com/niXman/yas/blob/master/include/yas/detail/tools/buffers.hpp#L50
[2] https://github.com/niXman/yas/blob/master/include/yas/detail/tools/buffers.hpp#L72


===
TODO

1. Add move-semantics support for deserializers.
2. Implement portable binary archives.
   Example:
     yas::binary_mem_oarchive<yas::endian_convertor> oa;
     oa & 33;
3. Implement the ability for compressing archives with LZO,ZLIB.
   Example:
     yas::binary_mem_oarchive<yas::lzo_compressor> oa;
     oa & 33;

About

Yet Another Serialization

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published