1 #ifndef PHP_DS_VECTOR_H
2 #define PHP_DS_VECTOR_H
3 
4 #include "../../ds/ds_vector.h"
5 
6 #define Z_DS_VECTOR(z)   (((php_ds_vector_t*)(Z_OBJ(z)))->vector)
7 #define Z_DS_VECTOR_P(z) Z_DS_VECTOR(*z)
8 #define THIS_DS_VECTOR() Z_DS_VECTOR_P(getThis())
9 
10 #define ZVAL_DS_VECTOR(z, v) ZVAL_OBJ(z, php_ds_vector_create_object_ex(v))
11 
12 #define RETURN_DS_VECTOR(v)                 \
13 do {                                        \
14     ds_vector_t *_v = v;                    \
15     if (_v) {                               \
16         ZVAL_DS_VECTOR(return_value, _v);   \
17     } else {                                \
18         ZVAL_NULL(return_value);            \
19     }                                       \
20     return;                                 \
21 } while(0)
22 
23 typedef struct php_ds_vector {
24     zend_object      std;
25     ds_vector_t     *vector;
26 } php_ds_vector_t;
27 
28 zend_object *php_ds_vector_create_object_ex(ds_vector_t *vector);
29 zend_object *php_ds_vector_create_object(zend_class_entry *ce);
30 zend_object *php_ds_vector_create_clone(ds_vector_t *vector);
31 
32 PHP_DS_SERIALIZE_FUNCIONS(php_ds_vector);
33 
34 #endif
35