-
-<p><a href="php__propro_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr class="memitem:structphp__property__proxy"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#structphp__property__proxy">php_property_proxy</a></td></tr>
-<tr class="memdesc:structphp__property__proxy"><td class="mdescLeft"> </td><td class="mdescRight">The internal property proxy. <a href="php__propro_8h.html#structphp__property__proxy">More...</a><br/></td></tr>
-<tr class="separator:structphp__property__proxy"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:structphp__property__proxy__object"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#structphp__property__proxy__object">php_property_proxy_object</a></td></tr>
-<tr class="memdesc:structphp__property__proxy__object"><td class="mdescLeft"> </td><td class="mdescRight">The userland object. <a href="php__propro_8h.html#structphp__property__proxy__object">More...</a><br/></td></tr>
-<tr class="separator:structphp__property__proxy__object"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:ac27c374d9d0cf65b52b16ea407df9eac"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="php__propro_8h.html#structphp__property__proxy">php_property_proxy</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#ac27c374d9d0cf65b52b16ea407df9eac">php_property_proxy_t</a></td></tr>
-<tr class="separator:ac27c374d9d0cf65b52b16ea407df9eac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaf59f3ba6014a701909054115f812451"><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
-<a class="el" href="php__propro_8h.html#structphp__property__proxy__object">php_property_proxy_object</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#aaf59f3ba6014a701909054115f812451">php_property_proxy_object_t</a></td></tr>
-<tr class="separator:aaf59f3ba6014a701909054115f812451"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a83d5ddbca9a25a062eded906182f205c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="php__propro_8h.html#ac27c374d9d0cf65b52b16ea407df9eac">php_property_proxy_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#a83d5ddbca9a25a062eded906182f205c">php_property_proxy_init</a> (zval *container, const char *member_str, size_t member_len)</td></tr>
-<tr class="memdesc:a83d5ddbca9a25a062eded906182f205c"><td class="mdescLeft"> </td><td class="mdescRight">Create a property proxy. <a href="#a83d5ddbca9a25a062eded906182f205c">More...</a><br/></td></tr>
-<tr class="separator:a83d5ddbca9a25a062eded906182f205c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae185a0f79aac26679cf1dd0de2e46f57"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#ae185a0f79aac26679cf1dd0de2e46f57">php_property_proxy_free</a> (<a class="el" href="php__propro_8h.html#ac27c374d9d0cf65b52b16ea407df9eac">php_property_proxy_t</a> **proxy)</td></tr>
-<tr class="memdesc:ae185a0f79aac26679cf1dd0de2e46f57"><td class="mdescLeft"> </td><td class="mdescRight">Destroy and free a property proxy. <a href="#ae185a0f79aac26679cf1dd0de2e46f57">More...</a><br/></td></tr>
-<tr class="separator:ae185a0f79aac26679cf1dd0de2e46f57"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15c4fce513dc952c575cd72332835aa4"><td class="memItemLeft" align="right" valign="top">zend_class_entry * </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#a15c4fce513dc952c575cd72332835aa4">php_property_proxy_get_class_entry</a> (void)</td></tr>
-<tr class="memdesc:a15c4fce513dc952c575cd72332835aa4"><td class="mdescLeft"> </td><td class="mdescRight">Get the zend_class_entry of php\PropertyProxy. <a href="#a15c4fce513dc952c575cd72332835aa4">More...</a><br/></td></tr>
-<tr class="separator:a15c4fce513dc952c575cd72332835aa4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a35874bda7876fa60b796a9fd90623c1f"><td class="memItemLeft" align="right" valign="top">zend_object_value </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#a35874bda7876fa60b796a9fd90623c1f">php_property_proxy_object_new</a> (zend_class_entry *ce)</td></tr>
-<tr class="memdesc:a35874bda7876fa60b796a9fd90623c1f"><td class="mdescLeft"> </td><td class="mdescRight">Instantiate a new php\PropertyProxy. <a href="#a35874bda7876fa60b796a9fd90623c1f">More...</a><br/></td></tr>
-<tr class="separator:a35874bda7876fa60b796a9fd90623c1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8972f05941efb141dd78c42bef70db2f"><td class="memItemLeft" align="right" valign="top">zend_object_value </td><td class="memItemRight" valign="bottom"><a class="el" href="php__propro_8h.html#a8972f05941efb141dd78c42bef70db2f">php_property_proxy_object_new_ex</a> (zend_class_entry *ce, <a class="el" href="php__propro_8h.html#ac27c374d9d0cf65b52b16ea407df9eac">php_property_proxy_t</a> *proxy, <a class="el" href="php__propro_8h.html#aaf59f3ba6014a701909054115f812451">php_property_proxy_object_t</a> **ptr)</td></tr>
-<tr class="memdesc:a8972f05941efb141dd78c42bef70db2f"><td class="mdescLeft"> </td><td class="mdescRight">Instantiate a new php\PropertyProxy with <em>proxy</em>. <a href="#a8972f05941efb141dd78c42bef70db2f">More...</a><br/></td></tr>
-<tr class="separator:a8972f05941efb141dd78c42bef70db2f"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<hr/><h2 class="groupheader">Data Structure Documentation</h2>
-<a name="structphp__property__proxy" id="structphp__property__proxy"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">struct php_property_proxy</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<div class="textblock"><p>The internal property proxy. </p>
-<p>Container for the object/array holding the proxied property. </p>
-</div><table class="fieldtable">
-<tr><th colspan="3">Data Fields</th></tr>
-<tr><td class="fieldtype">
-<a class="anchor" id="ac0fdbd3fa8f961d7732b89ad81d83f4f"></a>zval *</td>
-<td class="fieldname">
-container</td>
-<td class="fielddoc">
-The container holding the property. </td></tr>
-<tr><td class="fieldtype">
-<a class="anchor" id="ab9d36c8980c76898ce3f4c08f5c8748e"></a>size_t</td>
-<td class="fieldname">
-member_len</td>
-<td class="fielddoc">
-The length of the name. </td></tr>
-<tr><td class="fieldtype">
-<a class="anchor" id="ad6a7b61daa9561ff8bfc13e99dd68f51"></a>char *</td>
-<td class="fieldname">
-member_str</td>
-<td class="fielddoc">
-The name of the proxied property. </td></tr>
-</table>
-
-</div>
-</div>
-<a name="structphp__property__proxy__object" id="structphp__property__proxy__object"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">struct php_property_proxy_object</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<div class="textblock"><p>The userland object. </p>
-<p>Return an object instance of php\PropertyProxy to make your C-struct member accessible by reference from PHP userland.</p>
-<p>Example: </p>
-<div class="fragment"><div class="line"><span class="keyword">static</span> zval *my_read_prop(zval *<span class="keywordtype">object</span>, zval *member, <span class="keywordtype">int</span> type, zend_literal *key TSRMLS_DC)</div>
-<div class="line">{</div>
-<div class="line"> my_object_t *obj = zend_object_store_get_object(<span class="keywordtype">object</span> TSRMLS_CC);</div>
-<div class="line"> my_prophandler_t *handler;</div>
-<div class="line"> zval *return_value, *copy = my_cast(IS_STRING, member);</div>
-<div class="line"></div>
-<div class="line"> <span class="keywordflow">if</span> (SUCCESS == my_get_prophandler(Z_STRVAL_P(copy), Z_STRLEN_P(copy), &handler)) {</div>
-<div class="line"> ALLOC_ZVAL(return_value);</div>
-<div class="line"> Z_SET_REFCOUNT_P(return_value, 0);</div>
-<div class="line"> Z_UNSET_ISREF_P(return_value);</div>
-<div class="line"></div>
-<div class="line"> <span class="keywordflow">if</span> (type == BP_VAR_R) {</div>
-<div class="line"> handler->read(obj, return_value TSRMLS_CC);</div>
-<div class="line"> } <span class="keywordflow">else</span> {</div>
-<div class="line"> <span class="comment">//</span></div>
-<div class="line"> <span class="comment">// This is the interesting part</span></div>
-<div class="line"> <span class="comment">//</span></div>
-<div class="line"> <a class="code" href="php__propro_8h.html#structphp__property__proxy">php_property_proxy_t</a> *<a class="code" href="php__propro_8h.html#a87b08fb8c8dd5a44bccfac6fb81d2103">proxy</a>;</div>
-<div class="line"> zend_object_value proxy_ov;</div>
-<div class="line"> zend_class_entry *proxy_ce;</div>
-<div class="line"></div>
-<div class="line"> proxy = <a class="code" href="php__propro_8h.html#a83d5ddbca9a25a062eded906182f205c">php_property_proxy_init</a>(<span class="keywordtype">object</span>, Z_STRVAL_P(copy), Z_STRLEN_P(copy) TSRMLS_CC);</div>
-<div class="line"> proxy_ce = <a class="code" href="php__propro_8h.html#a15c4fce513dc952c575cd72332835aa4">php_property_proxy_get_class_entry</a>();</div>
-<div class="line"> proxy_ov = <a class="code" href="php__propro_8h.html#a8972f05941efb141dd78c42bef70db2f">php_property_proxy_object_new_ex</a>(proxy_ce, proxy, NULL TSRMLS_CC);</div>
-<div class="line"> RETVAL_OBJVAL(proxy_ov, 0);</div>
-<div class="line"> }</div>
-<div class="line"> } <span class="keywordflow">else</span> {</div>
-<div class="line"> zend_object_handlers *oh = zend_get_std_object_handlers();</div>
-<div class="line"> return_value = oh->read_property(<span class="keywordtype">object</span>, member, type, key TSRMLS_CC);</div>
-<div class="line"> }</div>
-<div class="line"></div>
-<div class="line"> zval_ptr_dtor(&copy);</div>
-<div class="line"></div>
-<div class="line"> <span class="keywordflow">return</span> return_value;</div>
-<div class="line">}</div>
-</div><!-- fragment --> </div><div class="dynheader">
-Collaboration diagram for php_property_proxy_object:</div>