aboutsummaryrefslogtreecommitdiffstats
path: root/pack.h
diff options
context:
space:
mode:
authorTomasz Kramkowski <tk@the-tk.com>2021-08-08 04:24:01 +0100
committerTomasz Kramkowski <tk@the-tk.com>2021-08-11 01:32:48 +0100
commitdfa850ebb5d1e44df7f9bc793cc052d4284fc0a5 (patch)
treebcee708dd84f40db57a591c41506fe595b94b811 /pack.h
parentd461b029213d366e0aab0f305b3f92b8ecd8d2e8 (diff)
downloadpack-dfa850ebb5d1e44df7f9bc793cc052d4284fc0a5.tar.gz
pack-dfa850ebb5d1e44df7f9bc793cc052d4284fc0a5.tar.xz
pack-dfa850ebb5d1e44df7f9bc793cc052d4284fc0a5.zip
implement unpack_struct
Diffstat (limited to 'pack.h')
-rw-r--r--pack.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/pack.h b/pack.h
index 7fd54a5..d43bdcf 100644
--- a/pack.h
+++ b/pack.h
@@ -42,8 +42,21 @@ enum pack_endian {
PACK_ENDIAN_LITTLE
};
+struct pack_field {
+ enum pack_type type;
+ size_t count;
+ size_t offset;
+};
+
+struct pack_args {
+ enum pack_endian endian;
+ struct pack_field *fields;
+ size_t num_fields;
+};
+
enum pack_status pack(void *dest, size_t size, const char *fmt, ...);
enum pack_status unpack(const void *buf, size_t size, const char *fmt, ...);
+enum pack_status unpack_struct(const void *buf, size_t size, const struct pack_args *args, void *dest);
const char *pack_strerror(enum pack_status status);