123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /*
- * 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 */
|