1 #ifndef PHP_TNT_MSGPACK_H
2 #define PHP_TNT_MSGPACK_H
3 
4 #include "php_tarantool.h"
5 
6 #define PHP_MP_SERIALIZABLE_P(v) (Z_TYPE_P(v) == IS_NULL   || \
7 				  Z_TYPE_P(v) == IS_LONG   || \
8 				  Z_TYPE_P(v) == IS_DOUBLE || \
9 				  Z_TYPE_P(v) == IS_FALSE  || \
10 				  Z_TYPE_P(v) == IS_TRUE   || \
11 				  Z_TYPE_P(v) == IS_ARRAY  || \
12 				  Z_TYPE_P(v) == IS_STRING || \
13 				  Z_TYPE_P(v) == IS_REFERENCE)
14 
15 size_t  php_mp_check  (const char   *str,  size_t str_size);
16 void    php_mp_pack   (smart_string *buf,  zval   *val    );
17 ssize_t php_mp_unpack (zval         *oval, char   **str   );
18 size_t  php_mp_sizeof (zval *val);
19 
20 void   php_mp_pack_package_size       (smart_string *str, size_t val);
21 void   php_mp_pack_package_size_basic (char *pos, size_t val);
22 size_t php_mp_unpack_package_size     (char *buf);
23 
24 int php_mp_is_hash(zval *val);
25 
26 void php_mp_pack_nil(smart_string *str);
27 void php_mp_pack_long_pos(smart_string *str, long val);
28 void php_mp_pack_long_neg(smart_string *str, long val);
29 void php_mp_pack_long(smart_string *str, long val);
30 void php_mp_pack_double(smart_string *str, double val);
31 void php_mp_pack_bool(smart_string *str, unsigned char val);
32 void php_mp_pack_string(smart_string *str, const char *c, size_t len);
33 void php_mp_pack_hash(smart_string *str, size_t len);
34 void php_mp_pack_array(smart_string *str, size_t len);
35 void php_mp_pack_array_recursively(smart_string *str, zval *val);
36 void php_mp_pack_hash_recursively(smart_string *str, zval *val);
37 
38 size_t php_mp_sizeof_nil();
39 size_t php_mp_sizeof_long_pos(long val);
40 size_t php_mp_sizeof_long_neg(long val);
41 size_t php_mp_sizeof_long(long val);
42 size_t php_mp_sizeof_double(double val);
43 size_t php_mp_sizeof_bool(unsigned char val);
44 size_t php_mp_sizeof_string(size_t len);
45 size_t php_mp_sizeof_hash(size_t len);
46 size_t php_mp_sizeof_array(size_t len);
47 size_t php_mp_sizeof_array_recursively(zval *val);
48 size_t php_mp_sizeof_hash_recursively(zval *val);
49 
50 int  smart_string_ensure(smart_string *str, size_t len);
51 void smart_string_nullify(smart_string *str);
52 #endif /* PHP_TNT_MSGPACK_H */
53