akwizgran created page: BDF

akwizgran
2015-04-01 12:21:26 +00:00
parent aab1392fdf
commit a69123ebdc

@@ -1,15 +1,15 @@
BDF is a data format designed for simplicity and compactness. It is a schema-less format with six primitive types (null, boolean, integer, floating point, string, raw) and two container types (list, dictionary). BDF is a data format designed for simplicity and compactness. It is a schema-less format with six primitive types (null, boolean, integer, float, string, raw) and two container types (list, dictionary).
Each object consists of a type, length and value. The first four bits of the object give its type. Depending on the type, the next four bits either give the length of the value, or the number of subsequent bytes that contain the length of the value. Each object consists of a type, length and value. The first four bits give the type. Depending on the type, the next four bits either give the length of the value, or the length of the length of the value. All lengths are measured in bytes.
* **0: Null** - Length is 0, value is empty. * **0: Null** - Length is 0, value is empty.
* **1: Boolean** - Length is 1, value is 0 or 1. * **1: Boolean** - Length is 1, value is 0 or 1.
* **2: Integer** - Length is 0, 1, 2, 4 or 8. Value is an integer with the specified length. * **2: Integer** - Length is 0, 1, 2, 4 or 8. Value is an integer with the specified length.
* **3: Floating point** - Length is 4 or 8. Value is a floating point number with the specified length. * **3: Float** - Length is 4 or 8. Value is a floating point number with the specified length.
* **4: String** - Length is 0, 1, 2 or 4. Value is an integer with the specified length, followed by a string with its length given by the integer. * **4: String** - Length is 0, 1, 2 or 4. Value is an integer with the specified length, followed by a string with its length given by the integer.
* **5: Raw** - Length is 0, 1, 2 or 4. Value is an integer with the specified length, followed by raw binary data with its length given by the integer. * **5: Raw** - Length is 0, 1, 2 or 4. Value is an integer with the specified length, followed by raw binary data with its length given by the integer.
* **6: List** - Length is 0. The value consists of zero or more objects of any type followed by an end object. * **6: List** - Length is 0. The value consists of zero or more objects of any type followed by an end marker.
* **7: Dictionary** - Length is 0. The value consists of zero or more key-value pairs followed by an end object. The keys are strings and the values may be of any type. * **7: Dictionary** - Length is 0. The value consists of zero or more key-value pairs followed by an end marker. The keys are strings and the values may be of any type.
* **8: End** - Length is 0, value is empty. Marks the end of a list or dictionary. * **8: End** - Length is 0, value is empty. Marks the end of a list or dictionary.
All integers in BDF are big-endian two's complement, floating point numbers are IEEE 754, and strings are UTF-8. Integers (including the lengths of strings and raws) must be represented using the minimum number of bytes. All integers are big-endian two's complement, floating point numbers are IEEE 754, and strings are UTF-8. Integers must be represented using the minimum number of bytes.