1 #ifndef PHP_DS_PAIR_H 2 #define PHP_DS_PAIR_H 3 4 #include "../../common.h" 5 6 #define Z_DS_PAIR(z) ((php_ds_pair_t*)(Z_OBJ(z))) 7 #define Z_DS_PAIR_P(z) Z_DS_PAIR(*z) 8 #define THIS_DS_PAIR() Z_DS_PAIR_P(getThis()) 9 10 #define ZVAL_DS_PAIR(z, p) ZVAL_OBJ(z, (zend_object*) p) 11 12 #define RETURN_DS_PAIR(p) \ 13 do { \ 14 php_ds_pair_t *_p = (php_ds_pair_t *) p; \ 15 if (_p) { \ 16 ZVAL_DS_PAIR(return_value, _p); \ 17 } else { \ 18 ZVAL_NULL(return_value); \ 19 } \ 20 return; \ 21 } while(0) 22 23 typedef struct _php_ds_pair_t { 24 zend_object std; 25 } php_ds_pair_t; 26 27 php_ds_pair_t *php_ds_pair_ex(zval *key, zval *value); 28 php_ds_pair_t *php_ds_pair(); 29 30 void php_ds_pair_set_key(php_ds_pair_t *obj, zval *key); 31 void php_ds_pair_set_value(php_ds_pair_t *obj, zval *value); 32 33 zval *php_ds_pair_get_key(php_ds_pair_t *obj); 34 zval *php_ds_pair_get_value(php_ds_pair_t *obj); 35 36 zend_object *php_ds_pair_create_object(zend_class_entry *ce); 37 zend_object *php_ds_pair_create_clone(php_ds_pair_t *obj); 38 39 void php_ds_pair_to_array(php_ds_pair_t *obj, zval *result); 40 41 PHP_DS_SERIALIZE_FUNCIONS(php_ds_pair); 42 43 #endif 44