return list_destructors.nNextFreeElement-1;
}
+ZEND_API int zend_fetch_list_dtor_id(char *type_name)
+{
+ zend_rsrc_list_dtors_entry *lde;
+ HashPosition pos;
+
+ zend_hash_internal_pointer_reset_ex(&list_destructors, &pos);
+ while(zend_hash_get_current_data_ex(&list_destructors, (void **)&lde, &pos) == SUCCESS) {
+ if(strcmp(type_name, lde->type_name) == 0)
+ {
+#if 0
+ printf("Found resource id %d for resource type %s\n",(*lde).resource_id,type_name);
+#endif
+ return lde->resource_id;
+ }
+ zend_hash_move_forward_ex(&list_destructors, &pos);
+ }
+
+ return 0;
+}
int zend_init_rsrc_list_dtors(void)
{
ZEND_API void *zend_fetch_resource(zval **passed_id, int default_id, char *resource_type_name, int *found_resource_type, int num_resource_types, ...);
ZEND_API char *zend_rsrc_list_get_rsrc_type(int resource);
+ZEND_API int zend_fetch_list_dtor_id(char *type_name);
extern ZEND_API int le_index_ptr; /* list entry type for index pointers */
#define ZEND_REGISTER_RESOURCE(rsrc_result, rsrc_pointer, rsrc_type) \
zend_register_resource(rsrc_result, rsrc_pointer, rsrc_type);
+#define ZEND_GET_LE(le_id, le_type_name) \
+ if(le_id == 0) { \
+ le_id = zend_fetch_list_dtor_id(le_type_name); \
+ }
+
#endif