Menu

Tree [04b224] master /
 History

HTTPS access


File Date Author Commit
 docs 2017-05-07 Giampiero Gabbiani Giampiero Gabbiani [1041f5] removed logo
 examples 2017-02-15 Giampiero Gabbiani Giampiero Gabbiani [743612] removed comment
 include 2017-06-26 Giampiero Gabbiani Giampiero Gabbiani [04b224] fixed comment for TSL_VALIDATE
 pilots 2015-10-27 Giampiero Gabbiani Giampiero Gabbiani [e2a762] minor changes
 platforms 2016-03-16 Giampiero Gabbiani Giampiero Gabbiani [0bfcc5] added cmake-sdk sub module, removed support for...
 src 2017-06-16 Giampiero Gabbiani Giampiero Gabbiani [6ac6af] applied move semantics
 unit-tests 2017-06-16 Giampiero Gabbiani Giampiero Gabbiani [6ac6af] applied move semantics
 .gitignore 2016-02-16 Giampiero Gabbiani Giampiero Gabbiani [c4b88b] - fixed wrong install path for API docs;
 .gitmodules 2016-07-08 Giampiero Gabbiani Giampiero Gabbiani [2ba2f4] mmmmah
 CMakeLists.txt 2017-06-14 Giampiero Gabbiani Giampiero Gabbiani [0132b8] bumped release
 ChangeLog.md 2017-06-13 Giampiero Gabbiani Giampiero Gabbiani [dd8604] updated comments
 INSTALL.md 2016-02-16 Giampiero Gabbiani Giampiero Gabbiani [c4b88b] - fixed wrong install path for API docs;
 README.md 2016-03-12 Giampiero Gabbiani Giampiero Gabbiani [87c6c8] added pre-requisites
 TODO.md 2017-05-01 Giampiero Gabbiani Giampiero Gabbiani [5242ee] new TODO added
 project.env.in 2016-03-16 Giampiero Gabbiani Giampiero Gabbiani [0bfcc5] added cmake-sdk sub module, removed support for...
 src-list.txt 2016-03-16 Giampiero Gabbiani Giampiero Gabbiani [0bfcc5] added cmake-sdk sub module, removed support for...
 tsl.ebuild 2016-03-11 Giampiero Gabbiani Giampiero Gabbiani [28b84f] general internale reorg, added ubuntu support, ...

Read Me

TSL

TSL stands for 'Trivial Serialization Library': it is a simple framework for C++11 serialization

Features:

  • enums: an automatic underlaying type detection for enums has been
    implemented allowing thereby the serialization / deserialization of any type
    of enums through the usage of the proper primitive type APIs.

  • scalar types: supported type with std library correspondence

TSL type std type
Bool bool
Char char
Int8 int8_t
Int16 int16_t
Int32 int32_t
Int64 int64_t
UInt8 uint8_t
UInt16 uint16_t
UInt32 uint32_t
UInt64 uint64_t
Float float
Double double
  • supported string types:
TSL type std type
String string
  • tsl::Variant various improvements:

    • comparison operators;
    • indirection operator for accessing the Variant delegate
      (i.e. boost::variant<tsl::variant::delegate>);</tsl::variant::delegate>
    • implementation of tsl::Variant::Void type (through boost::blank)
      corresponding to the value / type of any unitialized Variant;
    • every forementioned Scalar and string types are supported;
  • supported STL containers:

    • sequence containers (std::array,std::deque,std::forward_list,std::list,
      std::vector)
    • associative containers (std::map,std::multimap,std::multiset,std::set,
      std::unordered_map,std::unordered_multimap, std::unordered_set,
      std::unordered_multiset)
  • supported pointers:

    • dumb pointers to Serializable objects and Serializable derived class;
    • smart pointers (std::shared_ptr<>,std::unique_ptr<>) to Serializable objects and Serializable derived class;
  • TSL_Alias: Object aliases for simplified hand writing of archives.
    Now it is possible to specify an alias for a Serializable object or pointer
    to serializable object through the TSL_Alias tag and later to refer to the
    same object in other pointer instances specifying the alias name through
    the TSL_RefAlias tag (this feature is possible ONLY for pointers).

  • TSL_RefID : 'referred objects' implementation through new tag definition.
    Even if available for internal use only it improve the generated archive
    format.

  • error reporting:

  • improved parsing error reporting through grammar implementation and
    qi::expectation_failure<> exception.
  • tsl::parser::Helper for parser errors;

  • Exception safety: introduction of the open/close() methods and
    archive manipulators. The [I,O]Archive destructors potentially perform
    a further archive parsing/generation. In order to preserve basic exception
    safety, the destructor never throw anymore. For the caller environment
    there are 2 alternatives in order to catch the eventual residual errors
    during the closure of the archive:

    • call the [I,O]Archive::close() method before destructor call: this will
      actually throw en exception in case of error that can be managed by an
      error handler;
    • append as last item in a [de]serialization chain (operator &) an
      archive manipulator (tsl::endg for OArchive and tsl::endp for
      IArchive). These manipulators will perform a call to the corresponding
      [I/O]Archive::close() method and will eventually throw an error;
      This feature definitively replaced the delayed polimorphic exception throw.
  • Runtime support extension with type name cache

  • support for pure plugin

  • support for not serializable object serialization

  • escaped character support in strings

  • auto-register proxy support for serializable objects

  • archive formats:

  • xml
  • json
  • binary (big endian order)

Prerequisites:

Distro supported:

  • Centos-7
  • Debian-8
  • Gentoo
  • Fedora 22/23
  • OpenSUSE Leap 42.1
  • Ubuntu 14
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.