add region file format specification
This commit is contained in:
@@ -1,57 +0,0 @@
|
||||
# Binary JSON Format Specification
|
||||
|
||||
Format version: 1.0
|
||||
|
||||
This binary data format is developed for use as binary version of JSON in [VoxelEngine-Cpp](https://github.com/MihailRis/VoxelEngine-Cpp) and not compatible with [BSON](https://bsonspec.org/spec.html) due to elements/entries syntax and type codes differences
|
||||
|
||||
## Basic types
|
||||
|
||||
byteorder: little-endian
|
||||
| Name | Size | Definition |
|
||||
| ------- | ------- | ----------------------- |
|
||||
| byte | 1 byte | 8 bit unsigned integer |
|
||||
| int16 | 2 bytes | 16 bit signed integer |
|
||||
| int32 | 4 bytes | 32 bit signed integer |
|
||||
| int64 | 8 bytes | 64 bit unsigned integer |
|
||||
| uint32 | 4 bytes | 32 bit unsigned integer |
|
||||
| float64 | 8 bytes | 64 bit floating point |
|
||||
|
||||
## Syntax (RFC 5234)
|
||||
|
||||
```bnf
|
||||
file = %x01 document / cdocument file content
|
||||
document = uint32 (*entry) %x00 uint32 stores bytes number
|
||||
of the encoded document
|
||||
including the uint32 size
|
||||
entry = cstring value
|
||||
value = %x01 document
|
||||
/ %x02 (*value) %x00 list of values
|
||||
/ %x03 byte 8 bit integer
|
||||
/ %x04 int16 16 bit integer
|
||||
/ %x05 int32 32 bit integer
|
||||
/ %x06 int64 64 bit integer
|
||||
/ %x07 float64 number
|
||||
/ %x08 string utf-8 encoded string
|
||||
/ %x09 uint32 (*byte) bytes array
|
||||
/ %x0A boolean 'false'
|
||||
/ %x0B boolean 'true'
|
||||
/ %x0C null value
|
||||
cdocument = %x1F %x8B (16*byte) gzip-compressed data:
|
||||
%x01 document
|
||||
cstring = (*%x01-FF) %x00
|
||||
string = uint32 (*byte) uint32 stores number of the
|
||||
encoded string bytes
|
||||
|
||||
float64 = 8byte
|
||||
int64 = 8byte
|
||||
uint32 = 4byte
|
||||
int32 = 4byte
|
||||
int16 = 2byte
|
||||
byte = %x00-FF
|
||||
```
|
||||
|
||||
## VoxelEngine format support
|
||||
|
||||
Current implementation does not support types: bytes array, null, compressed document.
|
||||
|
||||
All unsupported types will be implemented in future.
|
||||
Reference in New Issue
Block a user