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