mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-20 14:02:40 +02:00
php: update 0.3.0
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
|
||||
#ifndef MSGPACL_UNPACK_H
|
||||
#define MSGPACL_UNPACK_H
|
||||
#ifndef MSGPACK_UNPACK_H
|
||||
#define MSGPACK_UNPACK_H
|
||||
|
||||
#include "ext/standard/php_var.h"
|
||||
|
||||
#define MSGPACK_EMBED_STACK_SIZE 1024
|
||||
|
||||
#include "msgpack/unpack_define.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MSGPACK_UNPACK_SUCCESS = 2,
|
||||
@@ -12,15 +16,114 @@ typedef enum
|
||||
MSGPACK_UNPACK_PARSE_ERROR = -1,
|
||||
} msgpack_unpack_return;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char *data;
|
||||
size_t length;
|
||||
size_t offset;
|
||||
typedef struct {
|
||||
zval *retval;
|
||||
long deps;
|
||||
php_unserialize_data_t *var_hash;
|
||||
long stack[MSGPACK_EMBED_STACK_SIZE];
|
||||
int type;
|
||||
} msgpack_unserialize_data;
|
||||
|
||||
int msgpack_unserialize_zval(
|
||||
zval **return_value, msgpack_unserialize_data *mpsd,
|
||||
php_unserialize_data_t *var_hash TSRMLS_DC);
|
||||
void msgpack_unserialize_var_init(php_unserialize_data_t *var_hashx);
|
||||
void msgpack_unserialize_var_destroy(php_unserialize_data_t *var_hashx);
|
||||
|
||||
void msgpack_unserialize_init(msgpack_unserialize_data *unpack);
|
||||
|
||||
int msgpack_unserialize_uint8(
|
||||
msgpack_unserialize_data *unpack, uint8_t data, zval **obj);
|
||||
int msgpack_unserialize_uint16(
|
||||
msgpack_unserialize_data *unpack, uint16_t data, zval **obj);
|
||||
int msgpack_unserialize_uint32(
|
||||
msgpack_unserialize_data *unpack, uint32_t data, zval **obj);
|
||||
int msgpack_unserialize_uint64(
|
||||
msgpack_unserialize_data *unpack, uint64_t data, zval **obj);
|
||||
int msgpack_unserialize_int8(
|
||||
msgpack_unserialize_data *unpack, int8_t data, zval **obj);
|
||||
int msgpack_unserialize_int16(
|
||||
msgpack_unserialize_data *unpack, int16_t data, zval **obj);
|
||||
int msgpack_unserialize_int32(
|
||||
msgpack_unserialize_data *unpack, int32_t data, zval **obj);
|
||||
int msgpack_unserialize_int64(
|
||||
msgpack_unserialize_data *unpack, int64_t data, zval **obj);
|
||||
int msgpack_unserialize_float(
|
||||
msgpack_unserialize_data *unpack, float data, zval **obj);
|
||||
int msgpack_unserialize_double(
|
||||
msgpack_unserialize_data *unpack, double data, zval **obj);
|
||||
int msgpack_unserialize_nil(msgpack_unserialize_data *unpack, zval **obj);
|
||||
int msgpack_unserialize_true(msgpack_unserialize_data *unpack, zval **obj);
|
||||
int msgpack_unserialize_false(msgpack_unserialize_data *unpack, zval **obj);
|
||||
int msgpack_unserialize_raw(
|
||||
msgpack_unserialize_data *unpack, const char* base, const char* data,
|
||||
unsigned int len, zval **obj);
|
||||
int msgpack_unserialize_array(
|
||||
msgpack_unserialize_data *unpack, unsigned int count, zval **obj);
|
||||
int msgpack_unserialize_array_item(
|
||||
msgpack_unserialize_data *unpack, zval **container, zval *obj);
|
||||
int msgpack_unserialize_map(
|
||||
msgpack_unserialize_data *unpack, unsigned int count, zval **obj);
|
||||
int msgpack_unserialize_map_item(
|
||||
msgpack_unserialize_data *unpack, zval **container, zval *key, zval *val);
|
||||
|
||||
/* template functions */
|
||||
#define msgpack_unpack_struct(name) struct template ## name
|
||||
#define msgpack_unpack_func(ret, name) ret template ## name
|
||||
#define msgpack_unpack_callback(name) template_callback ## name
|
||||
|
||||
#define msgpack_unpack_object zval*
|
||||
#define unpack_user msgpack_unserialize_data
|
||||
#define msgpack_unpack_user msgpack_unserialize_data
|
||||
|
||||
struct template_context;
|
||||
typedef struct template_context msgpack_unpack_t;
|
||||
|
||||
static void template_init(msgpack_unpack_t* unpack);
|
||||
static msgpack_unpack_object template_data(msgpack_unpack_t* unpack);
|
||||
static int template_execute(
|
||||
msgpack_unpack_t* unpack, const char* data, size_t len, size_t* off);
|
||||
|
||||
static inline msgpack_unpack_object template_callback_root(unpack_user* user)
|
||||
{
|
||||
msgpack_unserialize_init(user);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define template_callback_uint8(user, data, obj) \
|
||||
msgpack_unserialize_uint8(user, data, obj)
|
||||
#define template_callback_uint16(user, data, obj) \
|
||||
msgpack_unserialize_uint16(user, data, obj)
|
||||
#define template_callback_uint32(user, data, obj) \
|
||||
msgpack_unserialize_uint32(user, data, obj)
|
||||
#define template_callback_uint64(user, data, obj) \
|
||||
msgpack_unserialize_uint64(user, data, obj)
|
||||
#define template_callback_int8(user, data, obj) \
|
||||
msgpack_unserialize_int8(user, data, obj)
|
||||
#define template_callback_int16(user, data, obj) \
|
||||
msgpack_unserialize_int16(user, data, obj)
|
||||
#define template_callback_int32(user, data, obj) \
|
||||
msgpack_unserialize_int32(user, data, obj)
|
||||
#define template_callback_int64(user, data, obj) \
|
||||
msgpack_unserialize_int64(user, data, obj)
|
||||
#define template_callback_float(user, data, obj) \
|
||||
msgpack_unserialize_float(user, data, obj)
|
||||
#define template_callback_double(user, data, obj) \
|
||||
msgpack_unserialize_double(user, data, obj)
|
||||
#define template_callback_nil(user, obj) \
|
||||
msgpack_unserialize_nil(user, obj)
|
||||
#define template_callback_true(user, obj) \
|
||||
msgpack_unserialize_true(user, obj)
|
||||
#define template_callback_false(user, obj) \
|
||||
msgpack_unserialize_false(user, obj)
|
||||
#define template_callback_raw(user, base, data, len, obj) \
|
||||
msgpack_unserialize_raw(user, base, data, len, obj)
|
||||
#define template_callback_array(user, count, obj) \
|
||||
msgpack_unserialize_array(user, count, obj)
|
||||
#define template_callback_array_item(user, container, obj) \
|
||||
msgpack_unserialize_array_item(user, container, obj)
|
||||
#define template_callback_map(user, count, obj) \
|
||||
msgpack_unserialize_map(user, count, obj)
|
||||
#define template_callback_map_item(user, container, key, val) \
|
||||
msgpack_unserialize_map_item(user, container, key, val)
|
||||
|
||||
#include "msgpack/unpack_template.h"
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user