/*
* 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 = 0 x00,
MSGPACK_OBJECT_BOOLEAN = 0 x01,
MSGPACK_OBJECT_POSITIVE_INTEGER = 0 x02,
MSGPACK_OBJECT_NEGATIVE_INTEGER = 0 x03,
MSGPACK_OBJECT_FLOAT32 = 0 x0a,
MSGPACK_OBJECT_FLOAT64 = 0 x04,
MSGPACK_OBJECT_FLOAT = 0 x04,
#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 = 0 x05,
MSGPACK_OBJECT_ARRAY = 0 x06,
MSGPACK_OBJECT_MAP = 0 x07,
MSGPACK_OBJECT_BIN = 0 x08,
MSGPACK_OBJECT_EXT = 0 x09
} 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 */
Messung V0.5 in Prozent C=94 H=92 G=92
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland