blob: 6feb5f1ea3a7c4fdd7c2a621cd165cb887bb4a27 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/**
* 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.
* <p>
* GATS has a number of advantages over other systems for doing serialization.
* <ul>
* <li>GATS is a binary storage system, so values are stored accurately
* and compactly.</li>
* <li>GATS is arbitrary precision. There is no upper bound on any integers
* or floating point values stored in gats.</li>
* <li>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 <b>not</b> change
* dependent on the architecture.</li>
* <li>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.</li>
* <li>GATS offers a generalized hierarchical data structure much like many
* textual encoding/storage systems like json, xml, yaml, etc.</li>
* <li>GATS is designed with efficient transmission, compression, and
* encryption in mind which makes it an excellent choice as the underlying
* format for modern protocols.</li>
* </ul>
*
* GATS uses a generalized data structure for storing data which
* supports the following data types:
* <ul>
* <li>dictionaries</li>
* <li>lists</li>
* <li>booleans</li>
* <li>integers</li>
* <li>floats</li>
* <li>strings</li>
* </ul>
*
* Please see {@link com.xagasoft.gats.GatsOutputStream} for more information
* about how GATS is encoded.
*
*@author Mike Buland
*/
package com.xagasoft.gats;
|