Back to index

php5  5.3.10
Defines | Typedefs | Functions
spl_functions.h File Reference
#include "php.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define REGISTER_SPL_STD_CLASS(class_name, obj_ctor)   spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, NULL TSRMLS_CC);
#define REGISTER_SPL_STD_CLASS_EX(class_name, obj_ctor, funcs)   spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, funcs TSRMLS_CC);
#define REGISTER_SPL_SUB_CLASS_EX(class_name, parent_class_name, obj_ctor, funcs)   spl_register_sub_class(&spl_ce_ ## class_name, spl_ce_ ## parent_class_name, # class_name, obj_ctor, funcs TSRMLS_CC);
#define REGISTER_SPL_INTERFACE(class_name)   spl_register_interface(&spl_ce_ ## class_name, # class_name, spl_funcs_ ## class_name TSRMLS_CC);
#define REGISTER_SPL_IMPLEMENTS(class_name, interface_name)   zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, spl_ce_ ## interface_name);
#define REGISTER_SPL_ITERATOR(class_name)   zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, zend_ce_iterator);
#define REGISTER_SPL_PROPERTY(class_name, prop_name, prop_flags)   spl_register_property(spl_ce_ ## class_name, prop_name, sizeof(prop_name)-1, prop_flags TSRMLS_CC);
#define REGISTER_SPL_CLASS_CONST_LONG(class_name, const_name, value)   zend_declare_class_constant_long(spl_ce_ ## class_name, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC);
#define SPL_ME(class_name, function_name, arg_info, flags)   PHP_ME( spl_ ## class_name, function_name, arg_info, flags)
#define SPL_ABSTRACT_ME(class_name, function_name, arg_info)   ZEND_ABSTRACT_ME( spl_ ## class_name, function_name, arg_info)
#define SPL_METHOD(class_name, function_name)   PHP_METHOD(spl_ ## class_name, function_name)
#define SPL_MA(class_name, function_name, alias_class, alias_function, arg_info, flags)   PHP_MALIAS(spl_ ## alias_class, function_name, alias_function, arg_info, flags)

Typedefs

typedef zend_object_value(* create_object_func_t )(zend_class_entry *class_type TSRMLS_DC)

Functions

void spl_register_std_class (zend_class_entry **ppce, char *class_name, create_object_func_t ctor, const zend_function_entry *function_list TSRMLS_DC)
void spl_register_sub_class (zend_class_entry **ppce, zend_class_entry *parent_ce, char *class_name, create_object_func_t ctor, const zend_function_entry *function_list TSRMLS_DC)
void spl_register_interface (zend_class_entry **ppce, char *class_name, const zend_function_entry *functions 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)

Define Documentation

#define REGISTER_SPL_CLASS_CONST_LONG (   class_name,
  const_name,
  value 
)    zend_declare_class_constant_long(spl_ce_ ## class_name, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC);

Definition at line 49 of file spl_functions.h.

#define REGISTER_SPL_IMPLEMENTS (   class_name,
  interface_name 
)    zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, spl_ce_ ## interface_name);

Definition at line 40 of file spl_functions.h.

#define REGISTER_SPL_INTERFACE (   class_name)    spl_register_interface(&spl_ce_ ## class_name, # class_name, spl_funcs_ ## class_name TSRMLS_CC);

Definition at line 37 of file spl_functions.h.

#define REGISTER_SPL_ITERATOR (   class_name)    zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, zend_ce_iterator);

Definition at line 43 of file spl_functions.h.

#define REGISTER_SPL_PROPERTY (   class_name,
  prop_name,
  prop_flags 
)    spl_register_property(spl_ce_ ## class_name, prop_name, sizeof(prop_name)-1, prop_flags TSRMLS_CC);

Definition at line 46 of file spl_functions.h.

#define REGISTER_SPL_STD_CLASS (   class_name,
  obj_ctor 
)    spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, NULL TSRMLS_CC);

Definition at line 28 of file spl_functions.h.

#define REGISTER_SPL_STD_CLASS_EX (   class_name,
  obj_ctor,
  funcs 
)    spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, funcs TSRMLS_CC);

Definition at line 31 of file spl_functions.h.

#define REGISTER_SPL_SUB_CLASS_EX (   class_name,
  parent_class_name,
  obj_ctor,
  funcs 
)    spl_register_sub_class(&spl_ce_ ## class_name, spl_ce_ ## parent_class_name, # class_name, obj_ctor, funcs TSRMLS_CC);

Definition at line 34 of file spl_functions.h.

#define SPL_ABSTRACT_ME (   class_name,
  function_name,
  arg_info 
)    ZEND_ABSTRACT_ME( spl_ ## class_name, function_name, arg_info)

Definition at line 73 of file spl_functions.h.

#define SPL_MA (   class_name,
  function_name,
  alias_class,
  alias_function,
  arg_info,
  flags 
)    PHP_MALIAS(spl_ ## alias_class, function_name, alias_function, arg_info, flags)

Definition at line 79 of file spl_functions.h.

#define SPL_ME (   class_name,
  function_name,
  arg_info,
  flags 
)    PHP_ME( spl_ ## class_name, function_name, arg_info, flags)

Definition at line 70 of file spl_functions.h.

#define SPL_METHOD (   class_name,
  function_name 
)    PHP_METHOD(spl_ ## class_name, function_name)

Definition at line 76 of file spl_functions.h.


Typedef Documentation

typedef zend_object_value(* create_object_func_t)(zend_class_entry *class_type TSRMLS_DC)

Definition at line 26 of file spl_functions.h.


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:

void spl_register_std_class ( zend_class_entry **  ppce,
char *  class_name,
create_object_func_t  ctor,
const zend_function_entry *function_list  TSRMLS_DC 
)
void spl_register_sub_class ( zend_class_entry **  ppce,
zend_class_entry *  parent_ce,
char *  class_name,
create_object_func_t  ctor,
const zend_function_entry *function_list  TSRMLS_DC 
)