What is LavishSO?
LavishSO is short for Stored Objects, but could equally be Streamed or Serialized Objects. It is a simple and relatively compact, extensible container file format (and C++ library). It is along the same lines as Extensible Binary Meta-Language (EBML) but is not based on EBML nor entirely similar -- LSO is not designed for A/V, nor any other specific purpose, really. The format is Intel-endian.
The LSO format starts with a 16-byte header. The first 8 are used to indicate the file being in the LSO format (93 15 14 03 20 4C 53 4F = pi ' OSL'). Following that is the LSO format version, presently the value 0x00010000, and then the 32-bit UNIX timestamp for the time the file was produced.
After the 16-byte header is a table of object types that may be used in the file. Object types are stored as UTF-8 strings, preceeded by a 16-bit length
After the header and type table is exactly one stored object, which consists of a 32-bit object type index (1-based and referring to the table as 1 being the first type, 2 being the second type, and so on), and then the complete stored object, which is assumed to take up the rest of the space in the file. The format of the stored object is dependent on its object type, and thusly may contain more stored objects.
Provided Object Types
This object type allows embedding of multiple objects of varying lengths. Each object is stored sequentially and contiguously (each consisting of a 32-bit object type index, and then the object data), followed by a list of 32-bit object lengths (the list index), and then the 32-bit index size in bytes.
This object type, which could equally be in a module instead of built in, and will likely be so upon release, allows embedding of a single compressed object. First, a 32-bit uncompressed size is stored, followed by the gzip compressed data.
The license for the LavishSO library is not yet decided. The LSO file format itself is hereby public domain, though this publication is not.
LavishSO downloads are not yet ready for release. The initial format version is completed, but the source code is not yet.