diff options
Diffstat (limited to 'ext/xmlreader/php_xmlreader.c')
-rw-r--r-- | ext/xmlreader/php_xmlreader.c | 260 |
1 files changed, 127 insertions, 133 deletions
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index 329812cb21..79d41065cf 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -64,12 +64,12 @@ static void xmlreader_register_prop_handler(HashTable *prop_handler, char *name, hnd.read_char_func = read_char_func; hnd.read_int_func = read_int_func; hnd.type = rettype; - zend_hash_add(prop_handler, name, strlen(name)+1, &hnd, sizeof(xmlreader_prop_handler), NULL); + zend_hash_str_add_mem(prop_handler, name, strlen(name), &hnd, sizeof(xmlreader_prop_handler)); } /* }}} */ /* {{{ xmlreader_property_reader */ -static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handler *hnd, zval **retval TSRMLS_DC) +static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handler *hnd, zval *rv TSRMLS_DC) { const xmlChar *retchar = NULL; int retint = 0; @@ -88,24 +88,23 @@ static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handl } } - ALLOC_ZVAL(*retval); - switch (hnd->type) { case IS_STRING: if (retchar) { - ZVAL_STRING(*retval, (char *) retchar, 1); + ZVAL_STRING(rv, (char *) retchar); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(rv); } break; - case IS_BOOL: - ZVAL_BOOL(*retval, retint); + /* this IS_FALSE actually means it's a BOOL type */ + case IS_FALSE: + ZVAL_BOOL(rv, retint); break; - case IS_LONG: - ZVAL_LONG(*retval, retint); + case IS_INT: + ZVAL_INT(rv, retint); break; default: - ZVAL_NULL(*retval); + ZVAL_NULL(rv); } return SUCCESS; @@ -113,73 +112,71 @@ static int xmlreader_property_reader(xmlreader_object *obj, xmlreader_prop_handl /* }}} */ /* {{{ xmlreader_get_property_ptr_ptr */ -zval **xmlreader_get_property_ptr_ptr(zval *object, zval *member, int type, const zend_literal *key TSRMLS_DC) +zval *xmlreader_get_property_ptr_ptr(zval *object, zval *member, int type, void **cache_slot TSRMLS_DC) { xmlreader_object *obj; zval tmp_member; - zval **retval = NULL; - xmlreader_prop_handler *hnd; + zval *retval = NULL; + xmlreader_prop_handler *hnd = NULL; zend_object_handlers *std_hnd; - int ret = FAILURE; - if (member->type != IS_STRING) { + if (Z_TYPE_P(member) != IS_STRING) { tmp_member = *member; zval_copy_ctor(&tmp_member); convert_to_string(&tmp_member); member = &tmp_member; } - obj = (xmlreader_object *)zend_objects_get_address(object TSRMLS_CC); + obj = Z_XMLREADER_P(object); if (obj->prop_handler != NULL) { - ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd); + hnd = zend_hash_find_ptr(obj->prop_handler, Z_STR_P(member)); } - if (ret == FAILURE) { + + if (hnd == NULL) { std_hnd = zend_get_std_object_handlers(); - retval = std_hnd->get_property_ptr_ptr(object, member, type, key TSRMLS_CC); + retval = std_hnd->get_property_ptr_ptr(object, member, type, cache_slot TSRMLS_CC); } if (member == &tmp_member) { zval_dtor(member); } + return retval; } /* }}} */ /* {{{ xmlreader_read_property */ -zval *xmlreader_read_property(zval *object, zval *member, int type, const zend_literal *key TSRMLS_DC) +zval *xmlreader_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv TSRMLS_DC) { xmlreader_object *obj; zval tmp_member; - zval *retval; - xmlreader_prop_handler *hnd; + zval *retval = NULL; + xmlreader_prop_handler *hnd = NULL; zend_object_handlers *std_hnd; - int ret; - if (member->type != IS_STRING) { + if (Z_TYPE_P(member) != IS_STRING) { tmp_member = *member; zval_copy_ctor(&tmp_member); convert_to_string(&tmp_member); member = &tmp_member; } - ret = FAILURE; - obj = (xmlreader_object *)zend_objects_get_address(object TSRMLS_CC); + obj = Z_XMLREADER_P(object); if (obj->prop_handler != NULL) { - ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd); + hnd = zend_hash_find_ptr(obj->prop_handler, Z_STR_P(member)); } - if (ret == SUCCESS) { - ret = xmlreader_property_reader(obj, hnd, &retval TSRMLS_CC); - if (ret == SUCCESS) { - /* ensure we're creating a temporary variable */ - Z_SET_REFCOUNT_P(retval, 0); + + if (hnd != NULL) { + if (xmlreader_property_reader(obj, hnd, rv TSRMLS_CC) == FAILURE) { + retval = &EG(uninitialized_zval); } else { - retval = EG(uninitialized_zval_ptr); + retval = rv; } } else { std_hnd = zend_get_std_object_handlers(); - retval = std_hnd->read_property(object, member, type, key TSRMLS_CC); + retval = std_hnd->read_property(object, member, type, cache_slot, rv TSRMLS_CC); } if (member == &tmp_member) { @@ -190,32 +187,30 @@ zval *xmlreader_read_property(zval *object, zval *member, int type, const zend_l /* }}} */ /* {{{ xmlreader_write_property */ -void xmlreader_write_property(zval *object, zval *member, zval *value, const zend_literal *key TSRMLS_DC) +void xmlreader_write_property(zval *object, zval *member, zval *value, void **cache_slot TSRMLS_DC) { xmlreader_object *obj; zval tmp_member; - xmlreader_prop_handler *hnd; + xmlreader_prop_handler *hnd = NULL; zend_object_handlers *std_hnd; - int ret; - if (member->type != IS_STRING) { + if (Z_TYPE_P(member) != IS_STRING) { tmp_member = *member; zval_copy_ctor(&tmp_member); convert_to_string(&tmp_member); member = &tmp_member; } - ret = FAILURE; - obj = (xmlreader_object *)zend_objects_get_address(object TSRMLS_CC); + obj = Z_XMLREADER_P(object); if (obj->prop_handler != NULL) { - ret = zend_hash_find((HashTable *)obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd); + hnd = zend_hash_find_ptr(obj->prop_handler, Z_STR_P(member)); } - if (ret == SUCCESS) { + if (hnd != NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot write to read-only property"); } else { std_hnd = zend_get_std_object_handlers(); - std_hnd->write_property(object, member, value, key TSRMLS_CC); + std_hnd->write_property(object, member, value, cache_slot TSRMLS_CC); } if (member == &tmp_member) { @@ -375,37 +370,28 @@ static void xmlreader_free_resources(xmlreader_object *intern) { /* }}} */ /* {{{ xmlreader_objects_free_storage */ -void xmlreader_objects_free_storage(void *object TSRMLS_DC) +void xmlreader_objects_free_storage(zend_object *object TSRMLS_DC) { - xmlreader_object *intern = (xmlreader_object *)object; + xmlreader_object *intern = php_xmlreader_fetch_object(object); zend_object_std_dtor(&intern->std TSRMLS_CC); xmlreader_free_resources(intern); - - efree(object); } /* }}} */ /* {{{ xmlreader_objects_new */ -zend_object_value xmlreader_objects_new(zend_class_entry *class_type TSRMLS_DC) +zend_object *xmlreader_objects_new(zend_class_entry *class_type TSRMLS_DC) { - zend_object_value retval; xmlreader_object *intern; - intern = emalloc(sizeof(xmlreader_object)); - memset(&intern->std, 0, sizeof(zend_object)); - intern->ptr = NULL; - intern->input = NULL; - intern->schema = NULL; - intern->prop_handler = &xmlreader_prop_handlers; - + intern = ecalloc(1, sizeof(xmlreader_object) + sizeof(zval) * (class_type->default_properties_count - 1)); zend_object_std_init(&intern->std, class_type TSRMLS_CC); object_properties_init(&intern->std, class_type); - retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) xmlreader_objects_free_storage, xmlreader_objects_clone TSRMLS_CC); - intern->handle = retval.handle; - retval.handlers = &xmlreader_object_handlers; - return retval; + intern->prop_handler = &xmlreader_prop_handlers; + intern->std.handlers = &xmlreader_object_handlers; + + return &intern->std; } /* }}} */ @@ -428,12 +414,12 @@ static void php_xmlreader_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlreader_rea id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retchar = (char *)internal_function(intern->ptr, (const unsigned char *)name); } if (retchar) { - RETVAL_STRING(retchar, 1); + RETVAL_STRING(retchar); xmlFree(retchar); return; } else { @@ -450,7 +436,7 @@ static void php_xmlreader_no_arg(INTERNAL_FUNCTION_PARAMETERS, xmlreader_read_in id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retval = internal_function(intern->ptr); if (retval == 1) { @@ -462,6 +448,10 @@ static void php_xmlreader_no_arg(INTERNAL_FUNCTION_PARAMETERS, xmlreader_read_in } /* }}} */ +static void php_xmlreader_free_prop_handler(zval *el) /* {{{ */ { + pefree(Z_PTR_P(el), 1); +} /* }}} */ + #if LIBXML_VERSION >= 20620 /* {{{ php_xmlreader_no_arg_string */ static void php_xmlreader_no_arg_string(INTERNAL_FUNCTION_PARAMETERS, xmlreader_read_char_t internal_function) { @@ -471,12 +461,12 @@ static void php_xmlreader_no_arg_string(INTERNAL_FUNCTION_PARAMETERS, xmlreader_ id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retchar = (char *)internal_function(intern->ptr); } if (retchar) { - RETVAL_STRING(retchar, 1); + RETVAL_STRING(retchar); xmlFree(retchar); return; } else { @@ -506,7 +496,7 @@ static void php_xmlreader_set_relaxng_schema(INTERNAL_FUNCTION_PARAMETERS, int t id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { if (source) { schema = _xmlreader_get_relaxNG(source, source_len, type, NULL, NULL TSRMLS_CC); @@ -548,7 +538,7 @@ PHP_METHOD(xmlreader, close) xmlreader_object *intern; id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); /* libxml is segfaulting in versions up to 2.6.8 using xmlTextReaderClose so for now we will free the whole reader when close is called as it would get rebuilt on a new load anyways */ @@ -571,22 +561,22 @@ Get value of an attribute at index from current element */ PHP_METHOD(xmlreader, getAttributeNo) { zval *id; - long attr_pos; + php_int_t attr_pos; char *retchar = NULL; xmlreader_object *intern; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &attr_pos) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &attr_pos) == FAILURE) { return; } id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retchar = (char *)xmlTextReaderGetAttributeNo(intern->ptr, attr_pos); } if (retchar) { - RETVAL_STRING(retchar, 1); + RETVAL_STRING(retchar); xmlFree(retchar); } } @@ -612,12 +602,12 @@ PHP_METHOD(xmlreader, getAttributeNs) id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retchar = (char *)xmlTextReaderGetAttributeNs(intern->ptr, (xmlChar *)name, (xmlChar *)ns_uri); } if (retchar) { - RETVAL_STRING(retchar, 1); + RETVAL_STRING(retchar); xmlFree(retchar); } } @@ -628,17 +618,17 @@ Indicates whether given property (one of the parser option constants) is set or PHP_METHOD(xmlreader, getParserProperty) { zval *id; - long property; + php_int_t property; int retval = -1; xmlreader_object *intern; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &property) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &property) == FAILURE) { return; } id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retval = xmlTextReaderGetParserProp(intern->ptr,property); } @@ -689,7 +679,7 @@ PHP_METHOD(xmlreader, moveToAttribute) id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retval = xmlTextReaderMoveToAttribute(intern->ptr, (xmlChar *)name); if (retval == 1) { @@ -707,17 +697,17 @@ Returns TRUE on success and FALSE on failure */ PHP_METHOD(xmlreader, moveToAttributeNo) { zval *id; - long attr_pos; + php_int_t attr_pos; int retval; xmlreader_object *intern; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &attr_pos) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i", &attr_pos) == FAILURE) { return; } id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retval = xmlTextReaderMoveToAttributeNo(intern->ptr, attr_pos); if (retval == 1) { @@ -750,7 +740,7 @@ PHP_METHOD(xmlreader, moveToAttributeNs) id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retval = xmlTextReaderMoveToAttributeNs(intern->ptr, (xmlChar *)name, (xmlChar *)ns_uri); if (retval == 1) { @@ -795,7 +785,7 @@ PHP_METHOD(xmlreader, read) xmlreader_object *intern; id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern != NULL && intern->ptr != NULL) { retval = xmlTextReaderRead(intern->ptr); if (retval == -1) { @@ -824,7 +814,7 @@ PHP_METHOD(xmlreader, next) } id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern != NULL && intern->ptr != NULL) { #if LIBXML_VERSION <= 20617 /* Bug in libxml prevents a next in certain cases when positioned on end of element */ @@ -857,14 +847,14 @@ PHP_METHOD(xmlreader, open) { zval *id; int source_len = 0, encoding_len = 0; - long options = 0; + php_int_t options = 0; xmlreader_object *intern = NULL; char *source, *valid_file = NULL; char *encoding = NULL; char resolved_path[MAXPATHLEN + 1]; xmlTextReaderPtr reader = NULL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|s!l", &source, &source_len, &encoding, &encoding_len, &options) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|s!i", &source, &source_len, &encoding, &encoding_len, &options) == FAILURE) { return; } @@ -873,7 +863,7 @@ PHP_METHOD(xmlreader, open) if (! instanceof_function(Z_OBJCE_P(id), xmlreader_class_entry TSRMLS_CC)) { id = NULL; } else { - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); xmlreader_free_resources(intern); } } @@ -896,7 +886,7 @@ PHP_METHOD(xmlreader, open) if (id == NULL) { object_init_ex(return_value, xmlreader_class_entry); - intern = (xmlreader_object *)zend_objects_get_address(return_value TSRMLS_CC); + intern = Z_XMLREADER_P(return_value); intern->ptr = reader; return; } @@ -961,7 +951,7 @@ PHP_METHOD(xmlreader, setSchema) id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retval = xmlTextReaderSchemaValidate(intern->ptr, source); @@ -988,18 +978,18 @@ Properties must be set after open() or XML() and before the first read() is call PHP_METHOD(xmlreader, setParserProperty) { zval *id; - long property; + php_int_t property; int retval = -1; zend_bool value; xmlreader_object *intern; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lb", &property, &value) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ib", &property, &value) == FAILURE) { return; } id = getThis(); - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { retval = xmlTextReaderSetParserProp(intern->ptr,property, value); } @@ -1040,7 +1030,7 @@ PHP_METHOD(xmlreader, XML) { zval *id; int source_len = 0, encoding_len = 0; - long options = 0; + php_int_t options = 0; xmlreader_object *intern = NULL; char *source, *uri = NULL, *encoding = NULL; int resolved_path_len, ret = 0; @@ -1048,7 +1038,7 @@ PHP_METHOD(xmlreader, XML) xmlParserInputBufferPtr inputbfr; xmlTextReaderPtr reader; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!l", &source, &source_len, &encoding, &encoding_len, &options) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!i", &source, &source_len, &encoding, &encoding_len, &options) == FAILURE) { return; } @@ -1057,7 +1047,7 @@ PHP_METHOD(xmlreader, XML) id = NULL; } if (id != NULL) { - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); xmlreader_free_resources(intern); } @@ -1092,7 +1082,7 @@ PHP_METHOD(xmlreader, XML) if (ret == 0) { if (id == NULL) { object_init_ex(return_value, xmlreader_class_entry); - intern = (xmlreader_object *)zend_objects_get_address(return_value TSRMLS_CC); + intern = Z_XMLREADER_P(return_value); } else { RETVAL_TRUE; } @@ -1141,7 +1131,7 @@ PHP_METHOD(xmlreader, expand) docp = node->doc; } - intern = (xmlreader_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_XMLREADER_P(id); if (intern && intern->ptr) { node = xmlTextReaderExpand(intern->ptr); @@ -1168,6 +1158,7 @@ PHP_METHOD(xmlreader, expand) #endif } /* }}} */ + /* {{{ arginfo */ ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_close, 0) ZEND_END_ARG_INFO() @@ -1267,7 +1258,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_xmlreader_expand, 0) ZEND_END_ARG_INFO() /* }}} */ -static const zend_function_entry xmlreader_functions[] = { +static const zend_function_entry xmlreader_functions[] /* {{{ */ = { PHP_ME(xmlreader, close, arginfo_xmlreader_close, ZEND_ACC_PUBLIC) PHP_ME(xmlreader, getAttribute, arginfo_xmlreader_getAttribute, ZEND_ACC_PUBLIC) PHP_ME(xmlreader, getAttributeNo, arginfo_xmlreader_getAttributeNo, ZEND_ACC_PUBLIC) @@ -1299,7 +1290,7 @@ static const zend_function_entry xmlreader_functions[] = { PHP_ME(xmlreader, XML, arginfo_xmlreader_XML, ZEND_ACC_PUBLIC|ZEND_ACC_ALLOW_STATIC) PHP_ME(xmlreader, expand, arginfo_xmlreader_expand, ZEND_ACC_PUBLIC) PHP_FE_END -}; +}; /* }}} */ /* {{{ PHP_MINIT_FUNCTION */ @@ -1309,6 +1300,9 @@ PHP_MINIT_FUNCTION(xmlreader) zend_class_entry ce; memcpy(&xmlreader_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + xmlreader_object_handlers.offset = XtOffsetOf(xmlreader_object, std); + xmlreader_object_handlers.dtor_obj = zend_objects_destroy_object; + xmlreader_object_handlers.free_obj = xmlreader_objects_free_storage; xmlreader_object_handlers.read_property = xmlreader_read_property; xmlreader_object_handlers.write_property = xmlreader_write_property; xmlreader_object_handlers.get_property_ptr_ptr = xmlreader_get_property_ptr_ptr; @@ -1318,54 +1312,54 @@ PHP_MINIT_FUNCTION(xmlreader) ce.create_object = xmlreader_objects_new; xmlreader_class_entry = zend_register_internal_class(&ce TSRMLS_CC); - zend_hash_init(&xmlreader_prop_handlers, 0, NULL, NULL, 1); - xmlreader_register_prop_handler(&xmlreader_prop_handlers, "attributeCount", xmlTextReaderAttributeCount, NULL, IS_LONG TSRMLS_CC); + zend_hash_init(&xmlreader_prop_handlers, 0, NULL, php_xmlreader_free_prop_handler, 1); + xmlreader_register_prop_handler(&xmlreader_prop_handlers, "attributeCount", xmlTextReaderAttributeCount, NULL, IS_INT TSRMLS_CC); xmlreader_register_prop_handler(&xmlreader_prop_handlers, "baseURI", NULL, xmlTextReaderConstBaseUri, IS_STRING TSRMLS_CC); - xmlreader_register_prop_handler(&xmlreader_prop_handlers, "depth", xmlTextReaderDepth, NULL, IS_LONG TSRMLS_CC); - xmlreader_register_prop_handler(&xmlreader_prop_handlers, "hasAttributes", xmlTextReaderHasAttributes, NULL, IS_BOOL TSRMLS_CC); - xmlreader_register_prop_handler(&xmlreader_prop_handlers, "hasValue", xmlTextReaderHasValue, NULL, IS_BOOL TSRMLS_CC); - xmlreader_register_prop_handler(&xmlreader_prop_handlers, "isDefault", xmlTextReaderIsDefault, NULL, IS_BOOL TSRMLS_CC); - xmlreader_register_prop_handler(&xmlreader_prop_handlers, "isEmptyElement", xmlTextReaderIsEmptyElement, NULL, IS_BOOL TSRMLS_CC); + xmlreader_register_prop_handler(&xmlreader_prop_handlers, "depth", xmlTextReaderDepth, NULL, IS_INT TSRMLS_CC); + xmlreader_register_prop_handler(&xmlreader_prop_handlers, "hasAttributes", xmlTextReaderHasAttributes, NULL, IS_FALSE TSRMLS_CC); + xmlreader_register_prop_handler(&xmlreader_prop_handlers, "hasValue", xmlTextReaderHasValue, NULL, IS_FALSE TSRMLS_CC); + xmlreader_register_prop_handler(&xmlreader_prop_handlers, "isDefault", xmlTextReaderIsDefault, NULL, IS_FALSE TSRMLS_CC); + xmlreader_register_prop_handler(&xmlreader_prop_handlers, "isEmptyElement", xmlTextReaderIsEmptyElement, NULL, IS_FALSE TSRMLS_CC); xmlreader_register_prop_handler(&xmlreader_prop_handlers, "localName", NULL, xmlTextReaderConstLocalName, IS_STRING TSRMLS_CC); xmlreader_register_prop_handler(&xmlreader_prop_handlers, "name", NULL, xmlTextReaderConstName, IS_STRING TSRMLS_CC); xmlreader_register_prop_handler(&xmlreader_prop_handlers, "namespaceURI", NULL, xmlTextReaderConstNamespaceUri, IS_STRING TSRMLS_CC); - xmlreader_register_prop_handler(&xmlreader_prop_handlers, "nodeType", xmlTextReaderNodeType, NULL, IS_LONG TSRMLS_CC); + xmlreader_register_prop_handler(&xmlreader_prop_handlers, "nodeType", xmlTextReaderNodeType, NULL, IS_INT TSRMLS_CC); xmlreader_register_prop_handler(&xmlreader_prop_handlers, "prefix", NULL, xmlTextReaderConstPrefix, IS_STRING TSRMLS_CC); xmlreader_register_prop_handler(&xmlreader_prop_handlers, "value", NULL, xmlTextReaderConstValue, IS_STRING TSRMLS_CC); xmlreader_register_prop_handler(&xmlreader_prop_handlers, "xmlLang", NULL, xmlTextReaderConstXmlLang, IS_STRING TSRMLS_CC); /* Constants for NodeType - cannot define common types to share with dom as there are differences in these types */ - REGISTER_XMLREADER_CLASS_CONST_LONG("NONE", XML_READER_TYPE_NONE); - REGISTER_XMLREADER_CLASS_CONST_LONG("ELEMENT", XML_READER_TYPE_ELEMENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("ATTRIBUTE", XML_READER_TYPE_ATTRIBUTE); - REGISTER_XMLREADER_CLASS_CONST_LONG("TEXT", XML_READER_TYPE_TEXT); - REGISTER_XMLREADER_CLASS_CONST_LONG("CDATA", XML_READER_TYPE_CDATA); - REGISTER_XMLREADER_CLASS_CONST_LONG("ENTITY_REF", XML_READER_TYPE_ENTITY_REFERENCE); - REGISTER_XMLREADER_CLASS_CONST_LONG("ENTITY", XML_READER_TYPE_ENTITY); - REGISTER_XMLREADER_CLASS_CONST_LONG("PI", XML_READER_TYPE_PROCESSING_INSTRUCTION); - REGISTER_XMLREADER_CLASS_CONST_LONG("COMMENT", XML_READER_TYPE_COMMENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("DOC", XML_READER_TYPE_DOCUMENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("DOC_TYPE", XML_READER_TYPE_DOCUMENT_TYPE); - REGISTER_XMLREADER_CLASS_CONST_LONG("DOC_FRAGMENT", XML_READER_TYPE_DOCUMENT_FRAGMENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("NOTATION", XML_READER_TYPE_NOTATION); - REGISTER_XMLREADER_CLASS_CONST_LONG("WHITESPACE", XML_READER_TYPE_WHITESPACE); - REGISTER_XMLREADER_CLASS_CONST_LONG("SIGNIFICANT_WHITESPACE", XML_READER_TYPE_SIGNIFICANT_WHITESPACE); - REGISTER_XMLREADER_CLASS_CONST_LONG("END_ELEMENT", XML_READER_TYPE_END_ELEMENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("END_ENTITY", XML_READER_TYPE_END_ENTITY); - REGISTER_XMLREADER_CLASS_CONST_LONG("XML_DECLARATION", XML_READER_TYPE_XML_DECLARATION); + REGISTER_XMLREADER_CLASS_CONST_INT("NONE", XML_READER_TYPE_NONE); + REGISTER_XMLREADER_CLASS_CONST_INT("ELEMENT", XML_READER_TYPE_ELEMENT); + REGISTER_XMLREADER_CLASS_CONST_INT("ATTRIBUTE", XML_READER_TYPE_ATTRIBUTE); + REGISTER_XMLREADER_CLASS_CONST_INT("TEXT", XML_READER_TYPE_TEXT); + REGISTER_XMLREADER_CLASS_CONST_INT("CDATA", XML_READER_TYPE_CDATA); + REGISTER_XMLREADER_CLASS_CONST_INT("ENTITY_REF", XML_READER_TYPE_ENTITY_REFERENCE); + REGISTER_XMLREADER_CLASS_CONST_INT("ENTITY", XML_READER_TYPE_ENTITY); + REGISTER_XMLREADER_CLASS_CONST_INT("PI", XML_READER_TYPE_PROCESSING_INSTRUCTION); + REGISTER_XMLREADER_CLASS_CONST_INT("COMMENT", XML_READER_TYPE_COMMENT); + REGISTER_XMLREADER_CLASS_CONST_INT("DOC", XML_READER_TYPE_DOCUMENT); + REGISTER_XMLREADER_CLASS_CONST_INT("DOC_TYPE", XML_READER_TYPE_DOCUMENT_TYPE); + REGISTER_XMLREADER_CLASS_CONST_INT("DOC_FRAGMENT", XML_READER_TYPE_DOCUMENT_FRAGMENT); + REGISTER_XMLREADER_CLASS_CONST_INT("NOTATION", XML_READER_TYPE_NOTATION); + REGISTER_XMLREADER_CLASS_CONST_INT("WHITESPACE", XML_READER_TYPE_WHITESPACE); + REGISTER_XMLREADER_CLASS_CONST_INT("SIGNIFICANT_WHITESPACE", XML_READER_TYPE_SIGNIFICANT_WHITESPACE); + REGISTER_XMLREADER_CLASS_CONST_INT("END_ELEMENT", XML_READER_TYPE_END_ELEMENT); + REGISTER_XMLREADER_CLASS_CONST_INT("END_ENTITY", XML_READER_TYPE_END_ENTITY); + REGISTER_XMLREADER_CLASS_CONST_INT("XML_DECLARATION", XML_READER_TYPE_XML_DECLARATION); /* Constants for Parser options */ - REGISTER_XMLREADER_CLASS_CONST_LONG("LOADDTD", XML_PARSER_LOADDTD); - REGISTER_XMLREADER_CLASS_CONST_LONG("DEFAULTATTRS", XML_PARSER_DEFAULTATTRS); - REGISTER_XMLREADER_CLASS_CONST_LONG("VALIDATE", XML_PARSER_VALIDATE); - REGISTER_XMLREADER_CLASS_CONST_LONG("SUBST_ENTITIES", XML_PARSER_SUBST_ENTITIES); + REGISTER_XMLREADER_CLASS_CONST_INT("LOADDTD", XML_PARSER_LOADDTD); + REGISTER_XMLREADER_CLASS_CONST_INT("DEFAULTATTRS", XML_PARSER_DEFAULTATTRS); + REGISTER_XMLREADER_CLASS_CONST_INT("VALIDATE", XML_PARSER_VALIDATE); + REGISTER_XMLREADER_CLASS_CONST_INT("SUBST_ENTITIES", XML_PARSER_SUBST_ENTITIES); /* Constants for Errors when loading - not yet used until we implement custom error handling - REGISTER_XMLREADER_CLASS_CONST_LONG("VALIDITY_WARNING", XML_PARSER_SEVERITY_VALIDITY_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("VALIDITY_ERROR", XML_PARSER_SEVERITY_VALIDITY_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("WARNING", XML_PARSER_SEVERITY_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_XMLREADER_CLASS_CONST_LONG("ERROR", XML_PARSER_SEVERITY_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_XMLREADER_CLASS_CONST_INT("VALIDITY_WARNING", XML_PARSER_SEVERITY_VALIDITY_WARNING, CONST_CS | CONST_PERSISTENT); + REGISTER_XMLREADER_CLASS_CONST_INT("VALIDITY_ERROR", XML_PARSER_SEVERITY_VALIDITY_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_XMLREADER_CLASS_CONST_INT("WARNING", XML_PARSER_SEVERITY_WARNING, CONST_CS | CONST_PERSISTENT); + REGISTER_XMLREADER_CLASS_CONST_INT("ERROR", XML_PARSER_SEVERITY_ERROR, CONST_CS | CONST_PERSISTENT); */ return SUCCESS; |