xref: /ext-ds/src/php/objects/php_pair.h (revision 9f1ba416)
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