initial version
[m6w6/ext-propro] / php_propro.h
1
2 #ifndef PHP_PROPRO_H
3 #define PHP_PROPRO_H
4
5 extern zend_module_entry propro_module_entry;
6 #define phpext_propro_ptr &propro_module_entry
7
8 #define PHP_PROPRO_VERSION "1.0.0"
9
10 #ifdef PHP_WIN32
11 # define PHP_PROPRO_API __declspec(dllexport)
12 #elif defined(__GNUC__) && __GNUC__ >= 4
13 # define PHP_PROPRO_API __attribute__ ((visibility("default")))
14 #else
15 # define PHP_PROPRO_API
16 #endif
17
18 #ifdef ZTS
19 # include <TSRM/TSRM.h>
20 #endif
21
22 typedef struct php_property_proxy {
23 zval *container;
24 char *member_str;
25 size_t member_len;
26 } php_property_proxy_t;
27
28 typedef struct php_property_proxy_object {
29 zend_object zo;
30 zend_object_value zv;
31 php_property_proxy_t *proxy;
32 struct php_property_proxy_object *parent;
33 } php_property_proxy_object_t;
34
35 PHP_PROPRO_API php_property_proxy_t *php_property_proxy_init(zval *container, const char *member_str, size_t member_len TSRMLS_DC);
36 PHP_PROPRO_API void php_property_proxy_free(php_property_proxy_t **proxy);
37
38 PHP_PROPRO_API zend_class_entry *php_property_proxy_get_class_entry(void);
39
40 PHP_PROPRO_API zend_object_value php_property_proxy_object_new(zend_class_entry *ce TSRMLS_DC);
41 PHP_PROPRO_API zend_object_value php_property_proxy_object_new_ex(zend_class_entry *ce, php_property_proxy_t *proxy, php_property_proxy_object_t **ptr TSRMLS_DC);
42
43 #endif /* PHP_PROPRO_H */
44
45
46 /*
47 * Local variables:
48 * tab-width: 4
49 * c-basic-offset: 4
50 * End:
51 * vim600: noet sw=4 ts=4 fdm=marker
52 * vim<600: noet sw=4 ts=4
53 */