summaryrefslogtreecommitdiffstats
path: root/third_party/msgpack/include/msgpack/object.h
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/msgpack/include/msgpack/object.h')
-rw-r--r--third_party/msgpack/include/msgpack/object.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/third_party/msgpack/include/msgpack/object.h b/third_party/msgpack/include/msgpack/object.h
new file mode 100644
index 0000000000..0da280f560
--- /dev/null
+++ b/third_party/msgpack/include/msgpack/object.h
@@ -0,0 +1,116 @@
+/*
+ * MessagePack for C dynamic typing routine
+ *
+ * Copyright (C) 2008-2009 FURUHASHI Sadayuki
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef MSGPACK_OBJECT_H
+#define MSGPACK_OBJECT_H
+
+#include "zone.h"
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @defgroup msgpack_object Dynamically typed object
+ * @ingroup msgpack
+ * @{
+ */
+
+typedef enum {
+ MSGPACK_OBJECT_NIL = 0x00,
+ MSGPACK_OBJECT_BOOLEAN = 0x01,
+ MSGPACK_OBJECT_POSITIVE_INTEGER = 0x02,
+ MSGPACK_OBJECT_NEGATIVE_INTEGER = 0x03,
+ MSGPACK_OBJECT_FLOAT32 = 0x0a,
+ MSGPACK_OBJECT_FLOAT64 = 0x04,
+ MSGPACK_OBJECT_FLOAT = 0x04,
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ MSGPACK_OBJECT_DOUBLE = MSGPACK_OBJECT_FLOAT, /* obsolete */
+#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
+ MSGPACK_OBJECT_STR = 0x05,
+ MSGPACK_OBJECT_ARRAY = 0x06,
+ MSGPACK_OBJECT_MAP = 0x07,
+ MSGPACK_OBJECT_BIN = 0x08,
+ MSGPACK_OBJECT_EXT = 0x09
+} msgpack_object_type;
+
+
+struct msgpack_object;
+struct msgpack_object_kv;
+
+typedef struct {
+ uint32_t size;
+ struct msgpack_object* ptr;
+} msgpack_object_array;
+
+typedef struct {
+ uint32_t size;
+ struct msgpack_object_kv* ptr;
+} msgpack_object_map;
+
+typedef struct {
+ uint32_t size;
+ const char* ptr;
+} msgpack_object_str;
+
+typedef struct {
+ uint32_t size;
+ const char* ptr;
+} msgpack_object_bin;
+
+typedef struct {
+ int8_t type;
+ uint32_t size;
+ const char* ptr;
+} msgpack_object_ext;
+
+typedef union {
+ bool boolean;
+ uint64_t u64;
+ int64_t i64;
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ double dec; /* obsolete*/
+#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
+ double f64;
+ msgpack_object_array array;
+ msgpack_object_map map;
+ msgpack_object_str str;
+ msgpack_object_bin bin;
+ msgpack_object_ext ext;
+} msgpack_object_union;
+
+typedef struct msgpack_object {
+ msgpack_object_type type;
+ msgpack_object_union via;
+} msgpack_object;
+
+typedef struct msgpack_object_kv {
+ msgpack_object key;
+ msgpack_object val;
+} msgpack_object_kv;
+
+MSGPACK_DLLEXPORT
+void msgpack_object_print(FILE* out, msgpack_object o);
+
+MSGPACK_DLLEXPORT
+int msgpack_object_print_buffer(char *buffer, size_t buffer_size, msgpack_object o);
+
+MSGPACK_DLLEXPORT
+bool msgpack_object_equal(const msgpack_object x, const msgpack_object y);
+
+/** @} */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* msgpack/object.h */