/*
* Copyright (C) 2007-2012 Xagasoft, All rights reserved.
*
* This file is part of the libgats library and is released under the
* terms of the license contained in the file LICENSE.
*/
/**
* The Generalized Agile Transport System.
*
* This package contains interfaces for working with GATS. GATS is used to
* serialize data structures to and from storage as well as over the network.
*
* GATS has a number of advantages over other systems for doing serialization.
*
* - GATS is a binary storage system, so values are stored accurately
* and compactly.
* - GATS is arbitrary precision. There is no upper bound on any integers
* or floating point values stored in gats.
* - GATS is platform, language, and endianness agnostic. Data transmitted or
* stored using GATS can be received, read, and used on any platform
* without worries. The binary format of GATS does not change
* dependent on the architecture.
* - GATS guarantees no loss of precision for floating point numbers. When
* storing floating point numbers a binary format similar to that employed
* by computer hardware is used. All exceptional cases are also preserved,
* including +/- infinity, NaN, etc.
* - GATS offers a generalized hierarchical data structure much like many
* textual encoding/storage systems like json, xml, yaml, etc.
* - GATS is designed with efficient transmission, compression, and
* encryption in mind which makes it an excellent choice as the underlying
* format for modern protocols.
*
*
* GATS uses a generalized data structure for storing data which
* supports the following data types:
*
* - dictionaries
* - lists
* - booleans
* - integers
* - floats
* - strings
*
*
* Please see {@link com.xagasoft.gats.GatsOutputStream} for more information
* about how GATS is encoded.
*
*@author Mike Buland
*/
package com.xagasoft.gats;