messagepack implementation for embedded systems (mbed / arduino)
Dependents: hello_message_pack
msgpack-c & msgpack-c++ https://github.com/msgpack/msgpack-c implementation for embedded systems (mbed / Arduino)
include/unpack.h@4:bd0c06dd6e92, 2016-02-22 (annotated)
- Committer:
- hideakitai
- Date:
- Mon Feb 22 01:43:48 2016 +0000
- Revision:
- 4:bd0c06dd6e92
- Parent:
- 0:3f9dbf1e2cb0
fix throw error
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hideakitai | 0:3f9dbf1e2cb0 | 1 | /* |
hideakitai | 0:3f9dbf1e2cb0 | 2 | * MessagePack for C unpacking routine |
hideakitai | 0:3f9dbf1e2cb0 | 3 | * |
hideakitai | 0:3f9dbf1e2cb0 | 4 | * Copyright (C) 2008-2009 FURUHASHI Sadayuki |
hideakitai | 0:3f9dbf1e2cb0 | 5 | * |
hideakitai | 0:3f9dbf1e2cb0 | 6 | * Distributed under the Boost Software License, Version 1.0. |
hideakitai | 0:3f9dbf1e2cb0 | 7 | * (See accompanying file LICENSE_1_0.txt or copy at |
hideakitai | 0:3f9dbf1e2cb0 | 8 | * http://www.boost.org/LICENSE_1_0.txt) |
hideakitai | 0:3f9dbf1e2cb0 | 9 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 10 | #ifndef MSGPACK_UNPACKER_H |
hideakitai | 0:3f9dbf1e2cb0 | 11 | #define MSGPACK_UNPACKER_H |
hideakitai | 0:3f9dbf1e2cb0 | 12 | |
hideakitai | 0:3f9dbf1e2cb0 | 13 | #include "zone.h" |
hideakitai | 0:3f9dbf1e2cb0 | 14 | #include "object.h" |
hideakitai | 0:3f9dbf1e2cb0 | 15 | #include <string.h> |
hideakitai | 0:3f9dbf1e2cb0 | 16 | |
hideakitai | 0:3f9dbf1e2cb0 | 17 | #ifdef __cplusplus |
hideakitai | 0:3f9dbf1e2cb0 | 18 | extern "C" { |
hideakitai | 0:3f9dbf1e2cb0 | 19 | #endif |
hideakitai | 0:3f9dbf1e2cb0 | 20 | |
hideakitai | 0:3f9dbf1e2cb0 | 21 | |
hideakitai | 0:3f9dbf1e2cb0 | 22 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 23 | * @defgroup msgpack_unpack Deserializer |
hideakitai | 0:3f9dbf1e2cb0 | 24 | * @ingroup msgpack |
hideakitai | 0:3f9dbf1e2cb0 | 25 | * @{ |
hideakitai | 0:3f9dbf1e2cb0 | 26 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 27 | |
hideakitai | 0:3f9dbf1e2cb0 | 28 | typedef struct msgpack_unpacked { |
hideakitai | 0:3f9dbf1e2cb0 | 29 | msgpack_zone* zone; |
hideakitai | 0:3f9dbf1e2cb0 | 30 | msgpack_object data; |
hideakitai | 0:3f9dbf1e2cb0 | 31 | } msgpack_unpacked; |
hideakitai | 0:3f9dbf1e2cb0 | 32 | |
hideakitai | 0:3f9dbf1e2cb0 | 33 | typedef enum { |
hideakitai | 0:3f9dbf1e2cb0 | 34 | MSGPACK_UNPACK_SUCCESS = 2, |
hideakitai | 0:3f9dbf1e2cb0 | 35 | MSGPACK_UNPACK_EXTRA_BYTES = 1, |
hideakitai | 0:3f9dbf1e2cb0 | 36 | MSGPACK_UNPACK_CONTINUE = 0, |
hideakitai | 0:3f9dbf1e2cb0 | 37 | MSGPACK_UNPACK_PARSE_ERROR = -1, |
hideakitai | 0:3f9dbf1e2cb0 | 38 | MSGPACK_UNPACK_NOMEM_ERROR = -2 |
hideakitai | 0:3f9dbf1e2cb0 | 39 | } msgpack_unpack_return; |
hideakitai | 0:3f9dbf1e2cb0 | 40 | |
hideakitai | 0:3f9dbf1e2cb0 | 41 | |
hideakitai | 0:3f9dbf1e2cb0 | 42 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 43 | msgpack_unpack_return |
hideakitai | 0:3f9dbf1e2cb0 | 44 | msgpack_unpack_next(msgpack_unpacked* result, |
hideakitai | 0:3f9dbf1e2cb0 | 45 | const char* data, size_t len, size_t* off); |
hideakitai | 0:3f9dbf1e2cb0 | 46 | |
hideakitai | 0:3f9dbf1e2cb0 | 47 | /** @} */ |
hideakitai | 0:3f9dbf1e2cb0 | 48 | |
hideakitai | 0:3f9dbf1e2cb0 | 49 | |
hideakitai | 0:3f9dbf1e2cb0 | 50 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 51 | * @defgroup msgpack_unpacker Streaming deserializer |
hideakitai | 0:3f9dbf1e2cb0 | 52 | * @ingroup msgpack |
hideakitai | 0:3f9dbf1e2cb0 | 53 | * @{ |
hideakitai | 0:3f9dbf1e2cb0 | 54 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 55 | |
hideakitai | 0:3f9dbf1e2cb0 | 56 | typedef struct msgpack_unpacker { |
hideakitai | 0:3f9dbf1e2cb0 | 57 | char* buffer; |
hideakitai | 0:3f9dbf1e2cb0 | 58 | size_t used; |
hideakitai | 0:3f9dbf1e2cb0 | 59 | size_t free; |
hideakitai | 0:3f9dbf1e2cb0 | 60 | size_t off; |
hideakitai | 0:3f9dbf1e2cb0 | 61 | size_t parsed; |
hideakitai | 0:3f9dbf1e2cb0 | 62 | msgpack_zone* z; |
hideakitai | 0:3f9dbf1e2cb0 | 63 | size_t initial_buffer_size; |
hideakitai | 0:3f9dbf1e2cb0 | 64 | void* ctx; |
hideakitai | 0:3f9dbf1e2cb0 | 65 | } msgpack_unpacker; |
hideakitai | 0:3f9dbf1e2cb0 | 66 | |
hideakitai | 0:3f9dbf1e2cb0 | 67 | |
hideakitai | 0:3f9dbf1e2cb0 | 68 | #ifndef MSGPACK_UNPACKER_INIT_BUFFER_SIZE |
hideakitai | 0:3f9dbf1e2cb0 | 69 | #define MSGPACK_UNPACKER_INIT_BUFFER_SIZE (64*1024) |
hideakitai | 0:3f9dbf1e2cb0 | 70 | #endif |
hideakitai | 0:3f9dbf1e2cb0 | 71 | |
hideakitai | 0:3f9dbf1e2cb0 | 72 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 73 | * Initializes a streaming deserializer. |
hideakitai | 0:3f9dbf1e2cb0 | 74 | * The initialized deserializer must be destroyed by msgpack_unpacker_destroy(msgpack_unpacker*). |
hideakitai | 0:3f9dbf1e2cb0 | 75 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 76 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 77 | bool msgpack_unpacker_init(msgpack_unpacker* mpac, size_t initial_buffer_size); |
hideakitai | 0:3f9dbf1e2cb0 | 78 | |
hideakitai | 0:3f9dbf1e2cb0 | 79 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 80 | * Destroys a streaming deserializer initialized by msgpack_unpacker_init(msgpack_unpacker*, size_t). |
hideakitai | 0:3f9dbf1e2cb0 | 81 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 82 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 83 | void msgpack_unpacker_destroy(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 84 | |
hideakitai | 0:3f9dbf1e2cb0 | 85 | |
hideakitai | 0:3f9dbf1e2cb0 | 86 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 87 | * Creates a streaming deserializer. |
hideakitai | 0:3f9dbf1e2cb0 | 88 | * The created deserializer must be destroyed by msgpack_unpacker_free(msgpack_unpacker*). |
hideakitai | 0:3f9dbf1e2cb0 | 89 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 90 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 91 | msgpack_unpacker* msgpack_unpacker_new(size_t initial_buffer_size); |
hideakitai | 0:3f9dbf1e2cb0 | 92 | |
hideakitai | 0:3f9dbf1e2cb0 | 93 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 94 | * Frees a streaming deserializer created by msgpack_unpacker_new(size_t). |
hideakitai | 0:3f9dbf1e2cb0 | 95 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 96 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 97 | void msgpack_unpacker_free(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 98 | |
hideakitai | 0:3f9dbf1e2cb0 | 99 | |
hideakitai | 0:3f9dbf1e2cb0 | 100 | #ifndef MSGPACK_UNPACKER_RESERVE_SIZE |
hideakitai | 0:3f9dbf1e2cb0 | 101 | #define MSGPACK_UNPACKER_RESERVE_SIZE (32*1024) |
hideakitai | 0:3f9dbf1e2cb0 | 102 | #endif |
hideakitai | 0:3f9dbf1e2cb0 | 103 | |
hideakitai | 0:3f9dbf1e2cb0 | 104 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 105 | * Reserves free space of the internal buffer. |
hideakitai | 0:3f9dbf1e2cb0 | 106 | * Use this function to fill the internal buffer with |
hideakitai | 0:3f9dbf1e2cb0 | 107 | * msgpack_unpacker_buffer(msgpack_unpacker*), |
hideakitai | 0:3f9dbf1e2cb0 | 108 | * msgpack_unpacker_buffer_capacity(const msgpack_unpacker*) and |
hideakitai | 0:3f9dbf1e2cb0 | 109 | * msgpack_unpacker_buffer_consumed(msgpack_unpacker*). |
hideakitai | 0:3f9dbf1e2cb0 | 110 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 111 | static inline bool msgpack_unpacker_reserve_buffer(msgpack_unpacker* mpac, size_t size); |
hideakitai | 0:3f9dbf1e2cb0 | 112 | |
hideakitai | 0:3f9dbf1e2cb0 | 113 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 114 | * Gets pointer to the free space of the internal buffer. |
hideakitai | 0:3f9dbf1e2cb0 | 115 | * Use this function to fill the internal buffer with |
hideakitai | 0:3f9dbf1e2cb0 | 116 | * msgpack_unpacker_reserve_buffer(msgpack_unpacker*, size_t), |
hideakitai | 0:3f9dbf1e2cb0 | 117 | * msgpack_unpacker_buffer_capacity(const msgpack_unpacker*) and |
hideakitai | 0:3f9dbf1e2cb0 | 118 | * msgpack_unpacker_buffer_consumed(msgpack_unpacker*). |
hideakitai | 0:3f9dbf1e2cb0 | 119 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 120 | static inline char* msgpack_unpacker_buffer(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 121 | |
hideakitai | 0:3f9dbf1e2cb0 | 122 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 123 | * Gets size of the free space of the internal buffer. |
hideakitai | 0:3f9dbf1e2cb0 | 124 | * Use this function to fill the internal buffer with |
hideakitai | 0:3f9dbf1e2cb0 | 125 | * msgpack_unpacker_reserve_buffer(msgpack_unpacker*, size_t), |
hideakitai | 0:3f9dbf1e2cb0 | 126 | * msgpack_unpacker_buffer(const msgpack_unpacker*) and |
hideakitai | 0:3f9dbf1e2cb0 | 127 | * msgpack_unpacker_buffer_consumed(msgpack_unpacker*). |
hideakitai | 0:3f9dbf1e2cb0 | 128 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 129 | static inline size_t msgpack_unpacker_buffer_capacity(const msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 130 | |
hideakitai | 0:3f9dbf1e2cb0 | 131 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 132 | * Notifies the deserializer that the internal buffer filled. |
hideakitai | 0:3f9dbf1e2cb0 | 133 | * Use this function to fill the internal buffer with |
hideakitai | 0:3f9dbf1e2cb0 | 134 | * msgpack_unpacker_reserve_buffer(msgpack_unpacker*, size_t), |
hideakitai | 0:3f9dbf1e2cb0 | 135 | * msgpack_unpacker_buffer(msgpack_unpacker*) and |
hideakitai | 0:3f9dbf1e2cb0 | 136 | * msgpack_unpacker_buffer_capacity(const msgpack_unpacker*). |
hideakitai | 0:3f9dbf1e2cb0 | 137 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 138 | static inline void msgpack_unpacker_buffer_consumed(msgpack_unpacker* mpac, size_t size); |
hideakitai | 0:3f9dbf1e2cb0 | 139 | |
hideakitai | 0:3f9dbf1e2cb0 | 140 | |
hideakitai | 0:3f9dbf1e2cb0 | 141 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 142 | * Deserializes one object. |
hideakitai | 0:3f9dbf1e2cb0 | 143 | * Returns true if it successes. Otherwise false is returned. |
hideakitai | 0:3f9dbf1e2cb0 | 144 | * @param pac pointer to an initialized msgpack_unpacked object. |
hideakitai | 0:3f9dbf1e2cb0 | 145 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 146 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 147 | msgpack_unpack_return msgpack_unpacker_next(msgpack_unpacker* mpac, msgpack_unpacked* pac); |
hideakitai | 0:3f9dbf1e2cb0 | 148 | |
hideakitai | 0:3f9dbf1e2cb0 | 149 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 150 | * Initializes a msgpack_unpacked object. |
hideakitai | 0:3f9dbf1e2cb0 | 151 | * The initialized object must be destroyed by msgpack_unpacked_destroy(msgpack_unpacker*). |
hideakitai | 0:3f9dbf1e2cb0 | 152 | * Use the object with msgpack_unpacker_next(msgpack_unpacker*, msgpack_unpacked*) or |
hideakitai | 0:3f9dbf1e2cb0 | 153 | * msgpack_unpack_next(msgpack_unpacked*, const char*, size_t, size_t*). |
hideakitai | 0:3f9dbf1e2cb0 | 154 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 155 | static inline void msgpack_unpacked_init(msgpack_unpacked* result); |
hideakitai | 0:3f9dbf1e2cb0 | 156 | |
hideakitai | 0:3f9dbf1e2cb0 | 157 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 158 | * Destroys a streaming deserializer initialized by msgpack_unpacked(). |
hideakitai | 0:3f9dbf1e2cb0 | 159 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 160 | static inline void msgpack_unpacked_destroy(msgpack_unpacked* result); |
hideakitai | 0:3f9dbf1e2cb0 | 161 | |
hideakitai | 0:3f9dbf1e2cb0 | 162 | /** |
hideakitai | 0:3f9dbf1e2cb0 | 163 | * Releases the memory zone from msgpack_unpacked object. |
hideakitai | 0:3f9dbf1e2cb0 | 164 | * The released zone must be freed by msgpack_zone_free(msgpack_zone*). |
hideakitai | 0:3f9dbf1e2cb0 | 165 | */ |
hideakitai | 0:3f9dbf1e2cb0 | 166 | static inline msgpack_zone* msgpack_unpacked_release_zone(msgpack_unpacked* result); |
hideakitai | 0:3f9dbf1e2cb0 | 167 | |
hideakitai | 0:3f9dbf1e2cb0 | 168 | |
hideakitai | 0:3f9dbf1e2cb0 | 169 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 170 | int msgpack_unpacker_execute(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 171 | |
hideakitai | 0:3f9dbf1e2cb0 | 172 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 173 | msgpack_object msgpack_unpacker_data(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 174 | |
hideakitai | 0:3f9dbf1e2cb0 | 175 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 176 | msgpack_zone* msgpack_unpacker_release_zone(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 177 | |
hideakitai | 0:3f9dbf1e2cb0 | 178 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 179 | void msgpack_unpacker_reset_zone(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 180 | |
hideakitai | 0:3f9dbf1e2cb0 | 181 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 182 | void msgpack_unpacker_reset(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 183 | |
hideakitai | 0:3f9dbf1e2cb0 | 184 | static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 185 | |
hideakitai | 0:3f9dbf1e2cb0 | 186 | |
hideakitai | 0:3f9dbf1e2cb0 | 187 | /** @} */ |
hideakitai | 0:3f9dbf1e2cb0 | 188 | |
hideakitai | 0:3f9dbf1e2cb0 | 189 | |
hideakitai | 0:3f9dbf1e2cb0 | 190 | // obsolete |
hideakitai | 0:3f9dbf1e2cb0 | 191 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 192 | msgpack_unpack_return |
hideakitai | 0:3f9dbf1e2cb0 | 193 | msgpack_unpack(const char* data, size_t len, size_t* off, |
hideakitai | 0:3f9dbf1e2cb0 | 194 | msgpack_zone* result_zone, msgpack_object* result); |
hideakitai | 0:3f9dbf1e2cb0 | 195 | |
hideakitai | 0:3f9dbf1e2cb0 | 196 | |
hideakitai | 0:3f9dbf1e2cb0 | 197 | |
hideakitai | 0:3f9dbf1e2cb0 | 198 | |
hideakitai | 0:3f9dbf1e2cb0 | 199 | static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 200 | |
hideakitai | 0:3f9dbf1e2cb0 | 201 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 202 | bool msgpack_unpacker_flush_zone(msgpack_unpacker* mpac); |
hideakitai | 0:3f9dbf1e2cb0 | 203 | |
hideakitai | 0:3f9dbf1e2cb0 | 204 | MSGPACK_DLLEXPORT |
hideakitai | 0:3f9dbf1e2cb0 | 205 | bool msgpack_unpacker_expand_buffer(msgpack_unpacker* mpac, size_t size); |
hideakitai | 0:3f9dbf1e2cb0 | 206 | |
hideakitai | 0:3f9dbf1e2cb0 | 207 | static inline bool msgpack_unpacker_reserve_buffer(msgpack_unpacker* mpac, size_t size) |
hideakitai | 0:3f9dbf1e2cb0 | 208 | { |
hideakitai | 0:3f9dbf1e2cb0 | 209 | if(mpac->free >= size) { return true; } |
hideakitai | 0:3f9dbf1e2cb0 | 210 | return msgpack_unpacker_expand_buffer(mpac, size); |
hideakitai | 0:3f9dbf1e2cb0 | 211 | } |
hideakitai | 0:3f9dbf1e2cb0 | 212 | |
hideakitai | 0:3f9dbf1e2cb0 | 213 | static inline char* msgpack_unpacker_buffer(msgpack_unpacker* mpac) |
hideakitai | 0:3f9dbf1e2cb0 | 214 | { |
hideakitai | 0:3f9dbf1e2cb0 | 215 | return mpac->buffer + mpac->used; |
hideakitai | 0:3f9dbf1e2cb0 | 216 | } |
hideakitai | 0:3f9dbf1e2cb0 | 217 | |
hideakitai | 0:3f9dbf1e2cb0 | 218 | static inline size_t msgpack_unpacker_buffer_capacity(const msgpack_unpacker* mpac) |
hideakitai | 0:3f9dbf1e2cb0 | 219 | { |
hideakitai | 0:3f9dbf1e2cb0 | 220 | return mpac->free; |
hideakitai | 0:3f9dbf1e2cb0 | 221 | } |
hideakitai | 0:3f9dbf1e2cb0 | 222 | |
hideakitai | 0:3f9dbf1e2cb0 | 223 | static inline void msgpack_unpacker_buffer_consumed(msgpack_unpacker* mpac, size_t size) |
hideakitai | 0:3f9dbf1e2cb0 | 224 | { |
hideakitai | 0:3f9dbf1e2cb0 | 225 | mpac->used += size; |
hideakitai | 0:3f9dbf1e2cb0 | 226 | mpac->free -= size; |
hideakitai | 0:3f9dbf1e2cb0 | 227 | } |
hideakitai | 0:3f9dbf1e2cb0 | 228 | |
hideakitai | 0:3f9dbf1e2cb0 | 229 | static inline size_t msgpack_unpacker_message_size(const msgpack_unpacker* mpac) |
hideakitai | 0:3f9dbf1e2cb0 | 230 | { |
hideakitai | 0:3f9dbf1e2cb0 | 231 | return mpac->parsed - mpac->off + mpac->used; |
hideakitai | 0:3f9dbf1e2cb0 | 232 | } |
hideakitai | 0:3f9dbf1e2cb0 | 233 | |
hideakitai | 0:3f9dbf1e2cb0 | 234 | static inline size_t msgpack_unpacker_parsed_size(const msgpack_unpacker* mpac) |
hideakitai | 0:3f9dbf1e2cb0 | 235 | { |
hideakitai | 0:3f9dbf1e2cb0 | 236 | return mpac->parsed; |
hideakitai | 0:3f9dbf1e2cb0 | 237 | } |
hideakitai | 0:3f9dbf1e2cb0 | 238 | |
hideakitai | 0:3f9dbf1e2cb0 | 239 | |
hideakitai | 0:3f9dbf1e2cb0 | 240 | static inline void msgpack_unpacked_init(msgpack_unpacked* result) |
hideakitai | 0:3f9dbf1e2cb0 | 241 | { |
hideakitai | 0:3f9dbf1e2cb0 | 242 | memset(result, 0, sizeof(msgpack_unpacked)); |
hideakitai | 0:3f9dbf1e2cb0 | 243 | } |
hideakitai | 0:3f9dbf1e2cb0 | 244 | |
hideakitai | 0:3f9dbf1e2cb0 | 245 | static inline void msgpack_unpacked_destroy(msgpack_unpacked* result) |
hideakitai | 0:3f9dbf1e2cb0 | 246 | { |
hideakitai | 0:3f9dbf1e2cb0 | 247 | if(result->zone != NULL) { |
hideakitai | 0:3f9dbf1e2cb0 | 248 | msgpack_zone_free(result->zone); |
hideakitai | 0:3f9dbf1e2cb0 | 249 | result->zone = NULL; |
hideakitai | 0:3f9dbf1e2cb0 | 250 | memset(&result->data, 0, sizeof(msgpack_object)); |
hideakitai | 0:3f9dbf1e2cb0 | 251 | } |
hideakitai | 0:3f9dbf1e2cb0 | 252 | } |
hideakitai | 0:3f9dbf1e2cb0 | 253 | |
hideakitai | 0:3f9dbf1e2cb0 | 254 | static inline msgpack_zone* msgpack_unpacked_release_zone(msgpack_unpacked* result) |
hideakitai | 0:3f9dbf1e2cb0 | 255 | { |
hideakitai | 0:3f9dbf1e2cb0 | 256 | if(result->zone != NULL) { |
hideakitai | 0:3f9dbf1e2cb0 | 257 | msgpack_zone* z = result->zone; |
hideakitai | 0:3f9dbf1e2cb0 | 258 | result->zone = NULL; |
hideakitai | 0:3f9dbf1e2cb0 | 259 | return z; |
hideakitai | 0:3f9dbf1e2cb0 | 260 | } |
hideakitai | 0:3f9dbf1e2cb0 | 261 | return NULL; |
hideakitai | 0:3f9dbf1e2cb0 | 262 | } |
hideakitai | 0:3f9dbf1e2cb0 | 263 | |
hideakitai | 0:3f9dbf1e2cb0 | 264 | |
hideakitai | 0:3f9dbf1e2cb0 | 265 | #ifdef __cplusplus |
hideakitai | 0:3f9dbf1e2cb0 | 266 | } |
hideakitai | 0:3f9dbf1e2cb0 | 267 | #endif |
hideakitai | 0:3f9dbf1e2cb0 | 268 | |
hideakitai | 0:3f9dbf1e2cb0 | 269 | #endif /* msgpack/unpack.h */ |