aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f3b35ed
--- /dev/null
+++ b/README.md
@@ -0,0 +1,51 @@
+Serializer/deserializer library for C99
+=======================================
+
+This library hopes to be useful under certain circumstances where a portable
+implementation is desired to read/write data streams yet endianness and
+alignment requirements need to be taken into account e.g.: network protocols,
+file formats, etc. As the title specifies, only a C99-compliant compiler is
+required.
+
+Only 8-bit and 16/32-bit little-endian and big-endian values are supported.
+This means no support for bit fields, as some aspects of bit fields are
+implementation-defined.
+
+Usage
+------
+
+```{c}
+#include "serializer.h"
+#include <stdint.h>
+#include <stdio.h>
+
+int main()
+{
+ struct
+ {
+ uint8_t a;
+ uint16_t b;
+ uint32_t c;
+ uint16_t d;
+ } ex;
+
+ static const uint8_t data[] =
+ {
+ 0x01, 0x33, 0xFF, 0xAC, 0xBB, 0xFA, 0xFA, 0xDE, 0xDE
+ };
+
+ deserialize("1/le2/be4/be2", &ex, sizeof ex, data, sizeof data);
+ printf("a=%X, b=%X, c=%X, d=%X\n",
+ ex.a, ex.b, ex.c, ex.d);
+ return 0;
+}
+```
+Output
+------
+`a=1, b=FF33, c=ACBBFAFA, d=DEDE`
+
+TODO
+----
+Only deserialization is implemented. Serialization will be implemented in the future.
+
+64-bit support.