Property proxy API
A facility to manage extension object properties tied to C-struct members
 All Data Structures Files Functions Variables Typedefs
php_propro.h
Go to the documentation of this file.
1 /*
2  +--------------------------------------------------------------------+
3  | PECL :: propro |
4  +--------------------------------------------------------------------+
5  | Redistribution and use in source and binary forms, with or without |
6  | modification, are permitted provided that the conditions mentioned |
7  | in the accompanying LICENSE file are met. |
8  +--------------------------------------------------------------------+
9  | Copyright (c) 2013 Michael Wallner <mike@php.net> |
10  +--------------------------------------------------------------------+
11 */
12 
13 #ifndef PHP_PROPRO_H
14 #define PHP_PROPRO_H
15 
16 #ifndef DOXYGEN
17 
18 extern zend_module_entry propro_module_entry;
19 #define phpext_propro_ptr &propro_module_entry
20 
21 #define PHP_PROPRO_VERSION "1.0.0"
22 
23 #ifdef PHP_WIN32
24 # define PHP_PROPRO_API __declspec(dllexport)
25 #elif defined(__GNUC__) && __GNUC__ >= 4
26 # define PHP_PROPRO_API extern __attribute__ ((visibility("default")))
27 #else
28 # define PHP_PROPRO_API extern
29 #endif
30 
31 #ifdef ZTS
32 # include <TSRM/TSRM.h>
33 #endif
34 
35 #endif
36 
44  zval *container;
46  char *member_str;
48  size_t member_len;
49 };
51 
99  zend_object zo;
101  zend_object_value zv;
106 };
108 
120 PHP_PROPRO_API php_property_proxy_t *php_property_proxy_init(zval *container,
121  const char *member_str, size_t member_len TSRMLS_DC);
122 
130 PHP_PROPRO_API void php_property_proxy_free(php_property_proxy_t **proxy);
131 
136 PHP_PROPRO_API zend_class_entry *php_property_proxy_get_class_entry(void);
137 
143 PHP_PROPRO_API zend_object_value php_property_proxy_object_new(
144  zend_class_entry *ce TSRMLS_DC);
145 
153 PHP_PROPRO_API zend_object_value php_property_proxy_object_new_ex(
154  zend_class_entry *ce, php_property_proxy_t *proxy,
155  php_property_proxy_object_t **ptr TSRMLS_DC);
156 
157 #endif /* PHP_PROPRO_H */
158 
159 
160 /*
161  * Local variables:
162  * tab-width: 4
163  * c-basic-offset: 4
164  * End:
165  * vim600: noet sw=4 ts=4 fdm=marker
166  * vim<600: noet sw=4 ts=4
167  */
The internal property proxy.
Definition: php_propro.h:42
char * member_str
The name of the proxied property.
Definition: php_propro.h:46
php_property_proxy_t * php_property_proxy_init(zval *container, const char *member_str, size_t member_len)
Create a property proxy.
php_property_proxy_t * proxy
The actual property proxy.
Definition: php_propro.h:103
zend_object zo
The std zend_object.
Definition: php_propro.h:99
size_t member_len
The length of the name.
Definition: php_propro.h:48
zend_object_value php_property_proxy_object_new(zend_class_entry *ce)
Instantiate a new php\PropertyProxy.
zval * container
The container holding the property.
Definition: php_propro.h:44
zend_object_value php_property_proxy_object_new_ex(zend_class_entry *ce, php_property_proxy_t *proxy, php_property_proxy_object_t **ptr)
Instantiate a new php\PropertyProxy with proxy.
zend_object_value zv
The object value for easy zval creation.
Definition: php_propro.h:101
struct php_property_proxy_object * parent
A reference to any parent property proxy object.
Definition: php_propro.h:105
zend_class_entry * php_property_proxy_get_class_entry(void)
Get the zend_class_entry of php\PropertyProxy.
void php_property_proxy_free(php_property_proxy_t **proxy)
Destroy and free a property proxy.
The userland object.
Definition: php_propro.h:97