/* {{{ spl_add_interfaces */ void spl_add_interfaces(zval *list, zend_class_entry * pce, int allow, int ce_flags) { uint32_t 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); } }
/* {{{ spl_add_traits */ void spl_add_traits(zval *list, zend_class_entry * pce, int allow, int ce_flags) { uint32_t num_traits; for (num_traits = 0; num_traits < pce->num_traits; num_traits++) { spl_add_class_name(list, pce->traits[num_traits], allow, ce_flags); } }
/* {{{ spl_add_interfaces */ void spl_add_interfaces(zval *list, zend_class_entry * pce, int allow, int ce_flags) { uint32_t num_interfaces; if (pce->num_interfaces) { ZEND_ASSERT(pce->ce_flags & ZEND_ACC_LINKED); for (num_interfaces = 0; num_interfaces < pce->num_interfaces; num_interfaces++) { spl_add_class_name(list, pce->interfaces[num_interfaces], allow, ce_flags); } } }
/* {{{ spl_add_traits */ void spl_add_traits(zval *list, zend_class_entry * pce, int allow, int ce_flags) { uint32_t num_traits; zend_class_entry *trait; for (num_traits = 0; num_traits < pce->num_traits; num_traits++) { trait = zend_fetch_class_by_name(pce->trait_names[num_traits].name, pce->trait_names[num_traits].lc_name, ZEND_FETCH_CLASS_TRAIT); ZEND_ASSERT(trait); spl_add_class_name(list, trait, allow, ce_flags); } }
/* {{{ spl_add_classes */ int spl_add_classes(zend_class_entry *pce, zval *list, int sub, int allow, int ce_flags) { if (!pce) { return 0; } spl_add_class_name(list, pce, allow, ce_flags); if (sub) { spl_add_interfaces(list, pce, allow, ce_flags); while (pce->parent) { pce = pce->parent; spl_add_classes(pce, list, sub, allow, ce_flags); } } return 0; }