summaryrefslogtreecommitdiff
path: root/ext/spl/spl_functions.c
diff options
context:
space:
mode:
authorJani Taskinen <jani@php.net>2007-11-02 19:40:39 +0000
committerJani Taskinen <jani@php.net>2007-11-02 19:40:39 +0000
commitb48925117750da2a7fb7cff629e3852d13917f2f (patch)
tree44671e4afbcd83803757998784821a6cc19007b5 /ext/spl/spl_functions.c
parent0d7479891444f46d1c30cf875037e5099f8f782b (diff)
downloadphp-git-b48925117750da2a7fb7cff629e3852d13917f2f.tar.gz
- MFH from HEAD:
. Folding tags . Parameter parsing . SPL debug info . array function improvements (not all yet) . Improvements to function calling with call_user_* functions . Improvements to debugging info in var_dump/print_r # I propably forgot already something but this all was pretty close tied # to each other so it wasn't possible to do it in parts.
Diffstat (limited to 'ext/spl/spl_functions.c')
-rwxr-xr-xext/spl/spl_functions.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c
index 31acfee436..16bda2fcec 100755
--- a/ext/spl/spl_functions.c
+++ b/ext/spl/spl_functions.c
@@ -40,8 +40,7 @@ void spl_register_interface(zend_class_entry ** ppce, char * class_name, const z
{
zend_class_entry ce;
- INIT_CLASS_ENTRY(ce, class_name, functions);
- ce.name_length = strlen(class_name);
+ INIT_CLASS_ENTRY_EX(ce, class_name, strlen(class_name), functions);
*ppce = zend_register_internal_interface(&ce TSRMLS_CC);
}
/* }}} */
@@ -51,8 +50,7 @@ PHPAPI void spl_register_std_class(zend_class_entry ** ppce, char * class_name,
{
zend_class_entry ce;
- INIT_CLASS_ENTRY(ce, class_name, function_list);
- ce.name_length = strlen(class_name);
+ INIT_CLASS_ENTRY_EX(ce, class_name, strlen(class_name), function_list);
*ppce = zend_register_internal_class(&ce TSRMLS_CC);
/* entries changed by initialize */
@@ -67,8 +65,7 @@ PHPAPI void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry *
{
zend_class_entry ce;
- INIT_CLASS_ENTRY(ce, class_name, function_list);
- ce.name_length = strlen(class_name);
+ INIT_CLASS_ENTRY_EX(ce, class_name, strlen(class_name), function_list);
*ppce = zend_register_internal_class_ex(&ce, parent_ce, NULL TSRMLS_CC);
/* entries changed by initialize */
@@ -105,12 +102,12 @@ void spl_register_property( zend_class_entry * class_entry, char *prop_name, int
void spl_add_class_name(zval *list, zend_class_entry * pce, int allow, int ce_flags TSRMLS_DC)
{
if (!allow || (allow > 0 && pce->ce_flags & ce_flags) || (allow < 0 && !(pce->ce_flags & ce_flags))) {
- size_t len = strlen(pce->name);
+ size_t len = pce->name_length;
zval *tmp;
if (zend_hash_find(Z_ARRVAL_P(list), pce->name, len+1, (void*)&tmp) == FAILURE) {
MAKE_STD_ZVAL(tmp);
- ZVAL_STRING(tmp, pce->name, 1);
+ ZVAL_STRINGL(tmp, pce->name, pce->name_length, 1);
zend_hash_add(Z_ARRVAL_P(list), pce->name, len+1, &tmp, sizeof(zval *), NULL);
}
}
@@ -129,10 +126,8 @@ void spl_add_interfaces(zval *list, zend_class_entry * pce, int allow, int ce_fl
/* }}} */
/* {{{ spl_add_classes */
-int spl_add_classes(zend_class_entry ** ppce, zval *list, int sub, int allow, int ce_flags TSRMLS_DC)
+int spl_add_classes(zend_class_entry *pce, zval *list, int sub, int allow, int ce_flags TSRMLS_DC)
{
- zend_class_entry *pce = *ppce;
-
if (!pce) {
return 0;
}
@@ -141,13 +136,23 @@ int spl_add_classes(zend_class_entry ** ppce, zval *list, int sub, int allow, in
spl_add_interfaces(list, pce, allow, ce_flags TSRMLS_CC);
while (pce->parent) {
pce = pce->parent;
- spl_add_classes(&pce, list, sub, allow, ce_flags TSRMLS_CC);
+ spl_add_classes(pce, list, sub, allow, ce_flags TSRMLS_CC);
}
}
return 0;
}
/* }}} */
+char * spl_gen_private_prop_name(zend_class_entry *ce, char *prop_name, int prop_len, int *name_len TSRMLS_DC) /* {{{ */
+{
+ char *rv;
+
+ zend_mangle_property_name(&rv, name_len, ce->name, ce->name_length, prop_name, prop_len, 0);
+
+ return rv;
+}
+/* }}} */
+
/*
* Local variables:
* tab-width: 4