aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc/packer_defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/msgpack_rpc/packer_defs.h')
-rw-r--r--src/nvim/msgpack_rpc/packer_defs.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/nvim/msgpack_rpc/packer_defs.h b/src/nvim/msgpack_rpc/packer_defs.h
new file mode 100644
index 0000000000..420f3dc424
--- /dev/null
+++ b/src/nvim/msgpack_rpc/packer_defs.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include <stddef.h>
+#include <stdint.h>
+
+// Max possible length: bytecode + 8 int/float bytes
+// Ext objects are maximum 8=3+5 (nested uint32 payload)
+#define MPACK_ITEM_SIZE 9
+
+typedef struct packer_buffer_t PackerBuffer;
+
+// Must ensure at least MPACK_ITEM_SIZE of space.
+typedef void (*PackerBufferFlush)(PackerBuffer *self);
+
+struct packer_buffer_t {
+ char *startptr;
+ char *ptr;
+ char *endptr;
+
+ // these are free to be used by packer_flush for any purpose, if want
+ void *anydata;
+ size_t anylen;
+ PackerBufferFlush packer_flush;
+};