Back to index

php5  5.3.10
Functions
spl_functions.c File Reference
#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_spl.h"

Go to the source code of this file.

Functions

void spl_register_interface (zend_class_entry **ppce, char *class_name, const zend_function_entry *functions TSRMLS_DC)
PHPAPI void spl_register_std_class (zend_class_entry **ppce, char *class_name, void *obj_ctor, const zend_function_entry *function_list TSRMLS_DC)
PHPAPI void spl_register_sub_class (zend_class_entry **ppce, zend_class_entry *parent_ce, char *class_name, void *obj_ctor, const zend_function_entry *function_list TSRMLS_DC)
void spl_register_property (zend_class_entry *class_entry, char *prop_name, int prop_name_len, int prop_flags TSRMLS_DC)
void spl_add_class_name (zval *list, zend_class_entry *pce, int allow, int ce_flags TSRMLS_DC)
void spl_add_interfaces (zval *list, zend_class_entry *pce, 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)
char * spl_gen_private_prop_name (zend_class_entry *ce, char *prop_name, int prop_len, int *name_len TSRMLS_DC)

Function Documentation

void spl_add_class_name ( zval *  list,
zend_class_entry *  pce,
int  allow,
int ce_flags  TSRMLS_DC 
)

Definition at line 80 of file spl_functions.c.

{
       if (!allow || (allow > 0 && pce->ce_flags & ce_flags) || (allow < 0 && !(pce->ce_flags & ce_flags))) {
              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_STRINGL(tmp, pce->name, pce->name_length, 1);
                     zend_hash_add(Z_ARRVAL_P(list), pce->name, len+1, &tmp, sizeof(zval *), NULL);
              }
       }
}

Here is the call graph for this function:

Here is the caller graph for this function:

int spl_add_classes ( zend_class_entry *  pce,
zval *  list,
int  sub,
int  allow,
int ce_flags  TSRMLS_DC 
)

Definition at line 107 of file spl_functions.c.

{
       if (!pce) {
              return 0;
       }
       spl_add_class_name(list, pce, allow, ce_flags TSRMLS_CC);
       if (sub) {
              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);
              }
       }
       return 0;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void spl_add_interfaces ( zval *  list,
zend_class_entry *  pce,
int  allow,
int ce_flags  TSRMLS_DC 
)

Definition at line 96 of file spl_functions.c.

{
       zend_uint num_interfaces;

       for (num_interfaces = 0; num_interfaces < pce->num_interfaces; num_interfaces++) {
              spl_add_class_name(list, pce->interfaces[num_interfaces], allow, ce_flags TSRMLS_CC);
       }
}

Here is the call graph for this function:

Here is the caller graph for this function:

char* spl_gen_private_prop_name ( zend_class_entry *  ce,
char *  prop_name,
int  prop_len,
int *name_len  TSRMLS_DC 
)

Definition at line 124 of file spl_functions.c.

{
       char *rv;

       zend_mangle_property_name(&rv, name_len, ce->name, ce->name_length, prop_name, prop_len, 0);

       return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void spl_register_interface ( zend_class_entry **  ppce,
char *  class_name,
const zend_function_entry *functions  TSRMLS_DC 
)

Definition at line 31 of file spl_functions.c.

{
       zend_class_entry ce;
       
       INIT_CLASS_ENTRY_EX(ce, class_name, strlen(class_name), functions);
       *ppce = zend_register_internal_interface(&ce TSRMLS_CC);
}

Here is the call graph for this function:

void spl_register_property ( zend_class_entry *  class_entry,
char *  prop_name,
int  prop_name_len,
int prop_flags  TSRMLS_DC 
)

Definition at line 73 of file spl_functions.c.

{
       zend_declare_property_null(class_entry, prop_name, prop_name_len, prop_flags TSRMLS_CC);
}

Here is the call graph for this function:

PHPAPI void spl_register_std_class ( zend_class_entry **  ppce,
char *  class_name,
void *  obj_ctor,
const zend_function_entry *function_list  TSRMLS_DC 
)

Definition at line 41 of file spl_functions.c.

{
       zend_class_entry ce;
       
       INIT_CLASS_ENTRY_EX(ce, class_name, strlen(class_name), function_list);
       *ppce = zend_register_internal_class(&ce TSRMLS_CC);

       /* entries changed by initialize */
       if (obj_ctor) {
              (*ppce)->create_object = obj_ctor;
       }
}

Here is the call graph for this function:

PHPAPI void spl_register_sub_class ( zend_class_entry **  ppce,
zend_class_entry *  parent_ce,
char *  class_name,
void *  obj_ctor,
const zend_function_entry *function_list  TSRMLS_DC 
)

Definition at line 56 of file spl_functions.c.

{
       zend_class_entry ce;
       
       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 */
       if (obj_ctor) {
              (*ppce)->create_object = obj_ctor;
       } else {
              (*ppce)->create_object = parent_ce->create_object;
       }
}

Here is the call graph for this function: