-#define INIT_CLASS_ENTRY(class_container, class_name, functions) \
- { \
- class_container.name = strdup(class_name); \
- class_container.name_length = sizeof(class_name)-1; \
- class_container.builtin_functions = functions; \
- class_container.constructor = NULL; \
- class_container.destructor = NULL; \
- class_container.clone = NULL; \
- class_container.create_object = NULL; \
- class_container.handle_function_call = NULL; \
- class_container.handle_property_get = NULL; \
- class_container.handle_property_set = NULL; \
- }
+#define INIT_CLASS_ENTRY(class_container, class_name, functions) INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, NULL, NULL, NULL)
#define INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset) \
{ \
}
/* TBI!! new object handlers */
- if(!IS_ZEND_STD_OBJECT(**obj)) {
+ if(!HAS_CLASS_ENTRY(**obj)) {
RETURN_FALSE;
}
if (Z_TYPE_PP(class) == IS_OBJECT) {
/* TBI!! new object handlers */
- if(!IS_ZEND_STD_OBJECT(**class)) {
+ if(!HAS_CLASS_ENTRY(**class)) {
RETURN_FALSE;
}
ce = Z_OBJCE_PP(class);
}
/* TBI!! new object handlers */
- if(!IS_ZEND_STD_OBJECT(**klass)) {
+ if(!HAS_CLASS_ENTRY(**klass)) {
RETURN_FALSE;
}
extern zend_object_handlers std_object_handlers;
#define IS_ZEND_STD_OBJECT(z) ((z).type == IS_OBJECT && Z_OBJ_HT(z) == &std_object_handlers)
+#define HAS_CLASS_ENTRY(z) (Z_OBJ_HT(z)->get_class_entry != NULL)
#endif