mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
Make DOM compile
Just make it compile, not work yet...
This commit is contained in:
@@ -71,14 +71,12 @@ PHP_METHOD(domcdatasection, __construct)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
if (intern != NULL) {
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
}
|
||||
/* }}} end DOMCdataSection::__construct */
|
||||
|
||||
|
||||
@@ -76,25 +76,21 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-72AB8359
|
||||
Since:
|
||||
*/
|
||||
int dom_characterdata_data_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_characterdata_data_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNodePtr nodep;
|
||||
xmlNodePtr nodep = dom_object_get_node(obj);
|
||||
xmlChar *content;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if ((content = xmlNodeGetContent(nodep)) != NULL) {
|
||||
ZVAL_STRING(*retval, content, 1);
|
||||
ZVAL_STRING(retval, content);
|
||||
xmlFree(content);
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -102,31 +98,19 @@ int dom_characterdata_data_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
|
||||
int dom_characterdata_data_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
xmlNode *nodep;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
zend_string *str;
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (newval->type != IS_STRING) {
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_string(newval);
|
||||
}
|
||||
str = zval_get_string(newval TSRMLS_CC);
|
||||
|
||||
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
xmlNodeSetContentLen(nodep, str->val, str->len + 1);
|
||||
|
||||
STR_RELEASE(str);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -137,21 +121,17 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7D61178C
|
||||
Since:
|
||||
*/
|
||||
int dom_characterdata_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_characterdata_length_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNodePtr nodep;
|
||||
xmlNodePtr nodep = dom_object_get_node(obj);
|
||||
xmlChar *content;
|
||||
long length = 0;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
content = xmlNodeGetContent(nodep);
|
||||
|
||||
if (content) {
|
||||
@@ -159,7 +139,7 @@ int dom_characterdata_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
xmlFree(content);
|
||||
}
|
||||
|
||||
ZVAL_LONG(*retval, length);
|
||||
ZVAL_LONG(retval, length);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
@@ -207,7 +187,7 @@ PHP_FUNCTION(dom_characterdata_substring_data)
|
||||
xmlFree(cur);
|
||||
|
||||
if (substring) {
|
||||
RETVAL_STRING(substring, 1);
|
||||
RETVAL_STRING(substring);
|
||||
xmlFree(substring);
|
||||
} else {
|
||||
RETVAL_EMPTY_STRING();
|
||||
|
||||
@@ -71,7 +71,7 @@ PHP_METHOD(domcomment, __construct)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
if (intern != NULL) {
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
|
||||
@@ -280,7 +280,7 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-87CD092
|
||||
Since:
|
||||
*/
|
||||
int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_document_element_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
xmlNode *root;
|
||||
@@ -306,7 +306,7 @@ int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-encoding
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_document_encoding_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_encoding_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
char *encoding;
|
||||
@@ -338,7 +338,7 @@ int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
str = zval_get_string(newval TSMLRS_CC);
|
||||
str = zval_get_string(newval TSRMLS_CC);
|
||||
|
||||
handler = xmlFindCharEncodingHandler(Z_STRVAL_P(newval));
|
||||
|
||||
@@ -347,7 +347,7 @@ int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
if (docp->encoding != NULL) {
|
||||
xmlFree((xmlChar *)docp->encoding);
|
||||
}
|
||||
docp->encoding = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
|
||||
docp->encoding = xmlStrdup((const xmlChar *) str->val);
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Document Encoding");
|
||||
}
|
||||
@@ -363,10 +363,9 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-standalone
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_document_standalone_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_standalone_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDoc *docp;
|
||||
int standalone;
|
||||
|
||||
docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
|
||||
@@ -375,47 +374,22 @@ int dom_document_standalone_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
standalone = docp->standalone;
|
||||
ZVAL_BOOL(*retval, standalone);
|
||||
|
||||
ZVAL_BOOL(retval, docp->standalone);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_standalone_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
xmlDoc *docp;
|
||||
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
int standalone;
|
||||
|
||||
docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
|
||||
if (docp == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_long(newval);
|
||||
|
||||
standalone = Z_LVAL_P(newval);
|
||||
if (standalone > 0) {
|
||||
docp->standalone = 1;
|
||||
}
|
||||
else if (standalone < 0) {
|
||||
docp->standalone = -1;
|
||||
}
|
||||
else {
|
||||
docp->standalone = 0;
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
standalone = zval_get_long(newval TSRMLS_CC);
|
||||
docp->standalone = ZEND_NORMALIZE_BOOL(standalone);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
@@ -427,25 +401,22 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-version
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_document_version_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_version_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDoc *docp;
|
||||
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
char *version;
|
||||
|
||||
docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
|
||||
if (docp == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
version = (char *) docp->version;
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (version != NULL) {
|
||||
ZVAL_STRING(*retval, version, 1);
|
||||
ZVAL_STRING(retval, version);
|
||||
} else {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -453,10 +424,8 @@ int dom_document_version_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
|
||||
int dom_document_version_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
xmlDoc *docp;
|
||||
|
||||
docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
zend_string *str;
|
||||
|
||||
if (docp == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
@@ -467,21 +436,11 @@ int dom_document_version_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
xmlFree((xmlChar *) docp->version );
|
||||
}
|
||||
|
||||
if (newval->type != IS_STRING) {
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_string(newval);
|
||||
}
|
||||
str = zval_get_string(newval TSRMLS_CC);
|
||||
|
||||
docp->version = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
docp->version = xmlStrdup((const xmlChar *) str->val);
|
||||
|
||||
STR_RELEASE(str);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -492,39 +451,23 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-strictErrorChecking
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_document_strict_error_checking_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_strict_error_checking_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(*retval, doc_prop->stricterror);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(retval, doc_prop->stricterror);
|
||||
} else {
|
||||
ZVAL_FALSE(*retval);
|
||||
ZVAL_FALSE(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_strict_error_checking_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_boolean(newval);
|
||||
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->stricterror = Z_LVAL_P(newval);
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->stricterror = zend_is_true(newval TSRMLS_CC);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -535,39 +478,22 @@ int dom_document_strict_error_checking_write(dom_object *obj, zval *newval TSRML
|
||||
/* {{{ formatOutput boolean
|
||||
readonly=no
|
||||
*/
|
||||
int dom_document_format_output_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_format_output_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(*retval, doc_prop->formatoutput);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(retval, doc_prop->formatoutput);
|
||||
} else {
|
||||
ZVAL_FALSE(*retval);
|
||||
ZVAL_FALSE(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_format_output_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_boolean(newval);
|
||||
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->formatoutput = Z_LVAL_P(newval);
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->formatoutput = zend_is_true(newval TSRMLS_CC);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -577,39 +503,22 @@ int dom_document_format_output_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
/* {{{ validateOnParse boolean
|
||||
readonly=no
|
||||
*/
|
||||
int dom_document_validate_on_parse_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_validate_on_parse_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(*retval, doc_prop->validateonparse);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(retval, doc_prop->validateonparse);
|
||||
} else {
|
||||
ZVAL_FALSE(*retval);
|
||||
ZVAL_FALSE(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_validate_on_parse_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_boolean(newval);
|
||||
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->validateonparse = Z_LVAL_P(newval);
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->validateonparse = zend_is_true(newval TSRMLS_CC);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -619,39 +528,22 @@ int dom_document_validate_on_parse_write(dom_object *obj, zval *newval TSRMLS_DC
|
||||
/* {{{ resolveExternals boolean
|
||||
readonly=no
|
||||
*/
|
||||
int dom_document_resolve_externals_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_resolve_externals_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(*retval, doc_prop->resolveexternals);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(retval, doc_prop->resolveexternals);
|
||||
} else {
|
||||
ZVAL_FALSE(*retval);
|
||||
ZVAL_FALSE(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_resolve_externals_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_boolean(newval);
|
||||
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->resolveexternals = Z_LVAL_P(newval);
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->resolveexternals = zend_is_true(newval TSRMLS_CC);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -661,39 +553,22 @@ int dom_document_resolve_externals_write(dom_object *obj, zval *newval TSRMLS_DC
|
||||
/* {{{ preserveWhiteSpace boolean
|
||||
readonly=no
|
||||
*/
|
||||
int dom_document_preserve_whitespace_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_preserve_whitespace_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(*retval, doc_prop->preservewhitespace);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(retval, doc_prop->preservewhitespace);
|
||||
} else {
|
||||
ZVAL_FALSE(*retval);
|
||||
ZVAL_FALSE(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_preserve_whitespace_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_boolean(newval);
|
||||
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->preservewhitespace = Z_LVAL_P(newval);
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->preservewhitespace = zend_is_true(newval TSRMLS_CC);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -703,39 +578,22 @@ int dom_document_preserve_whitespace_write(dom_object *obj, zval *newval TSRMLS_
|
||||
/* {{{ recover boolean
|
||||
readonly=no
|
||||
*/
|
||||
int dom_document_recover_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_recover_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(*retval, doc_prop->recover);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(retval, doc_prop->recover);
|
||||
} else {
|
||||
ZVAL_FALSE(*retval);
|
||||
ZVAL_FALSE(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_recover_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_boolean(newval);
|
||||
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->recover = Z_LVAL_P(newval);
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->recover = zend_is_true(newval TSRMLS_CC);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -745,39 +603,22 @@ int dom_document_recover_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
/* {{{ substituteEntities boolean
|
||||
readonly=no
|
||||
*/
|
||||
int dom_document_substitue_entities_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_substitue_entities_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(*retval, doc_prop->substituteentities);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
ZVAL_BOOL(retval, doc_prop->substituteentities);
|
||||
} else {
|
||||
ZVAL_FALSE(*retval);
|
||||
ZVAL_FALSE(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int dom_document_substitue_entities_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
dom_doc_propsptr doc_prop;
|
||||
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_boolean(newval);
|
||||
|
||||
if (obj->document) {
|
||||
doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->substituteentities = Z_LVAL_P(newval);
|
||||
}
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document);
|
||||
doc_prop->substituteentities = zend_is_true(newval TSRMLS_CC);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -789,24 +630,21 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-documentURI
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_document_document_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_document_uri_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDoc *docp;
|
||||
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
char *url;
|
||||
|
||||
docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
|
||||
if (docp == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
url = (char *) docp->URL;
|
||||
if (url != NULL) {
|
||||
ZVAL_STRING(*retval, url, 1);
|
||||
ZVAL_STRING(retval, url);
|
||||
} else {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -814,10 +652,8 @@ int dom_document_document_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
|
||||
int dom_document_document_uri_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
xmlDoc *docp;
|
||||
|
||||
docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj);
|
||||
zend_string *str;
|
||||
|
||||
if (docp == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
@@ -828,21 +664,11 @@ int dom_document_document_uri_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
xmlFree((xmlChar *) docp->URL);
|
||||
}
|
||||
|
||||
if (newval->type != IS_STRING) {
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_string(newval);
|
||||
}
|
||||
str = zval_get_string(newval TSRMLS_CC);
|
||||
|
||||
docp->URL = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval));
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
docp->URL = xmlStrdup((const xmlChar *) str->val);
|
||||
|
||||
STR_RELEASE(str);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -853,10 +679,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-config
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_document_config_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_document_config_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -1128,7 +953,7 @@ PHP_FUNCTION(dom_document_get_elements_by_tag_name)
|
||||
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
|
||||
|
||||
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
|
||||
namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
|
||||
namednode = Z_DOMOBJ_P(return_value);
|
||||
local = xmlCharStrndup(name, name_len);
|
||||
dom_namednode_iter(intern, 0, namednode, NULL, local, NULL TSRMLS_CC);
|
||||
}
|
||||
@@ -1337,7 +1162,7 @@ PHP_FUNCTION(dom_document_get_elements_by_tag_name_ns)
|
||||
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
|
||||
|
||||
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
|
||||
namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
|
||||
namednode = Z_DOMOBJ_P(return_value);
|
||||
local = xmlCharStrndup(name, name_len);
|
||||
nsuri = xmlCharStrndup(uri, uri_len);
|
||||
dom_namednode_iter(intern, 0, namednode, NULL, local, nsuri TSRMLS_CC);
|
||||
@@ -1443,7 +1268,7 @@ PHP_METHOD(domdocument, __construct)
|
||||
docp->encoding = (const xmlChar*)xmlStrdup(encoding);
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
if (intern != NULL) {
|
||||
olddoc = (xmlDocPtr) dom_object_get_node(intern);
|
||||
if (olddoc != NULL) {
|
||||
@@ -1523,7 +1348,7 @@ static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, int sourc
|
||||
char *directory=NULL, resolved_path[MAXPATHLEN];
|
||||
|
||||
if (id != NULL) {
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
document = intern->document;
|
||||
}
|
||||
|
||||
@@ -1656,7 +1481,7 @@ static void dom_parse_document(INTERNAL_FUNCTION_PARAMETERS, int mode) {
|
||||
RETURN_FALSE;
|
||||
|
||||
if (id != NULL) {
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
if (intern != NULL) {
|
||||
docp = (xmlDocPtr) dom_object_get_node(intern);
|
||||
doc_prop = NULL;
|
||||
@@ -1798,7 +1623,7 @@ PHP_FUNCTION(dom_document_savexml)
|
||||
xmlBufferFree(buf);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
RETVAL_STRING(mem, 1);
|
||||
RETVAL_STRING(mem);
|
||||
xmlBufferFree(buf);
|
||||
} else {
|
||||
if (options & LIBXML_SAVE_NOEMPTYTAG) {
|
||||
@@ -1813,7 +1638,7 @@ PHP_FUNCTION(dom_document_savexml)
|
||||
if (!size) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
RETVAL_STRINGL(mem, size, 1);
|
||||
RETVAL_STRINGL(mem, size);
|
||||
xmlFree(mem);
|
||||
}
|
||||
}
|
||||
@@ -2175,7 +2000,7 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */
|
||||
RETURN_FALSE;
|
||||
|
||||
if (id != NULL && instanceof_function(Z_OBJCE_P(id), dom_document_class_entry TSRMLS_CC)) {
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
if (intern != NULL) {
|
||||
docp = (xmlDocPtr) dom_object_get_node(intern);
|
||||
doc_prop = NULL;
|
||||
@@ -2320,7 +2145,7 @@ PHP_FUNCTION(dom_document_save_html)
|
||||
if (!mem) {
|
||||
RETVAL_FALSE;
|
||||
} else {
|
||||
RETVAL_STRINGL((const char*) mem, size, 1);
|
||||
RETVAL_STRINGL((const char*) mem, size);
|
||||
}
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error dumping HTML node");
|
||||
@@ -2336,7 +2161,7 @@ PHP_FUNCTION(dom_document_save_html)
|
||||
if (!size) {
|
||||
RETVAL_FALSE;
|
||||
} else {
|
||||
RETVAL_STRINGL((const char*) mem, size, 1);
|
||||
RETVAL_STRINGL((const char*) mem, size);
|
||||
}
|
||||
if (mem)
|
||||
xmlFree(mem);
|
||||
@@ -2353,47 +2178,22 @@ PHP_METHOD(domdocument, registerNodeClass)
|
||||
{
|
||||
zval *id;
|
||||
xmlDoc *docp;
|
||||
char *baseclass = NULL, *extendedclass = NULL;
|
||||
int baseclass_len = 0, extendedclass_len = 0;
|
||||
zend_class_entry *basece = NULL, *ce = NULL;
|
||||
zend_class_entry *basece = dom_node_class_entry, *ce = NULL;
|
||||
dom_object *intern;
|
||||
|
||||
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss!", &id, dom_document_class_entry, &baseclass, &baseclass_len, &extendedclass, &extendedclass_len) == FAILURE) {
|
||||
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OCs!", &id, dom_document_class_entry, &basece, &ce) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (baseclass_len) {
|
||||
zend_class_entry **pce;
|
||||
if (zend_lookup_class(baseclass, baseclass_len, &pce TSRMLS_CC) == FAILURE) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s does not exist", baseclass);
|
||||
return;
|
||||
}
|
||||
basece = *pce;
|
||||
}
|
||||
|
||||
if (basece == NULL || ! instanceof_function(basece, dom_node_class_entry TSRMLS_CC)) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from DOMNode.", baseclass);
|
||||
return;
|
||||
}
|
||||
|
||||
if (extendedclass_len) {
|
||||
zend_class_entry **pce;
|
||||
if (zend_lookup_class(extendedclass, extendedclass_len, &pce TSRMLS_CC) == FAILURE) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s does not exist", extendedclass);
|
||||
}
|
||||
ce = *pce;
|
||||
}
|
||||
|
||||
if (ce == NULL || instanceof_function(ce, basece TSRMLS_CC)) {
|
||||
|
||||
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
|
||||
|
||||
if (dom_set_doc_classmap(intern->document, basece, ce TSRMLS_CC) == FAILURE) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s could not be registered.", extendedclass);
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s could not be registered.", ce->name->val);
|
||||
}
|
||||
RETURN_TRUE;
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from %s.", extendedclass, baseclass);
|
||||
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from %s.", ce->name->val, basece->name->val);
|
||||
}
|
||||
|
||||
RETURN_FALSE;
|
||||
|
||||
@@ -72,15 +72,13 @@ PHP_METHOD(domdocumentfragment, __construct)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
if (intern != NULL) {
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
/* php_dom_set_object(intern, nodep TSRMLS_CC); */
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
/* php_dom_set_object(intern, nodep TSRMLS_CC); */
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
}
|
||||
/* }}} end DOMDocumentFragment::__construct */
|
||||
|
||||
|
||||
@@ -43,19 +43,16 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1844763134
|
||||
Since:
|
||||
*/
|
||||
int dom_documenttype_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_documenttype_name_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDtdPtr dtdptr;
|
||||
|
||||
dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
|
||||
if (dtdptr == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, (char *) (dtdptr->name), 1);
|
||||
ZVAL_STRING(retval, (char *) (dtdptr->name));
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
@@ -67,25 +64,22 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1788794630
|
||||
Since:
|
||||
*/
|
||||
int dom_documenttype_entities_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_documenttype_entities_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDtdPtr doctypep;
|
||||
xmlDtdPtr doctypep = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
xmlHashTable *entityht;
|
||||
dom_object *intern;
|
||||
|
||||
doctypep = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
|
||||
if (doctypep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
MAKE_STD_ZVAL(*retval);
|
||||
php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC);
|
||||
php_dom_create_interator(retval, DOM_NAMEDNODEMAP TSRMLS_CC);
|
||||
|
||||
entityht = (xmlHashTable *) doctypep->entities;
|
||||
|
||||
intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(retval);
|
||||
dom_namednode_iter(obj, XML_ENTITY_NODE, intern, entityht, NULL, NULL TSRMLS_CC);
|
||||
|
||||
return SUCCESS;
|
||||
@@ -98,25 +92,22 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D46829EF
|
||||
Since:
|
||||
*/
|
||||
int dom_documenttype_notations_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_documenttype_notations_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDtdPtr doctypep;
|
||||
xmlDtdPtr doctypep = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
xmlHashTable *notationht;
|
||||
dom_object *intern;
|
||||
|
||||
doctypep = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
|
||||
if (doctypep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
MAKE_STD_ZVAL(*retval);
|
||||
php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC);
|
||||
php_dom_create_interator(retval, DOM_NAMEDNODEMAP TSRMLS_CC);
|
||||
|
||||
notationht = (xmlHashTable *) doctypep->notations;
|
||||
|
||||
intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(retval);
|
||||
dom_namednode_iter(obj, XML_NOTATION_NODE, intern, notationht, NULL, NULL TSRMLS_CC);
|
||||
|
||||
return SUCCESS;
|
||||
@@ -129,22 +120,19 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-publicId
|
||||
Since: DOM Level 2
|
||||
*/
|
||||
int dom_documenttype_public_id_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_documenttype_public_id_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDtdPtr dtdptr;
|
||||
|
||||
dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
|
||||
if (dtdptr == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (dtdptr->ExternalID) {
|
||||
ZVAL_STRING(*retval, (char *) (dtdptr->ExternalID), 1);
|
||||
ZVAL_STRING(retval, (char *) (dtdptr->ExternalID));
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
|
||||
@@ -157,22 +145,19 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-systemId
|
||||
Since: DOM Level 2
|
||||
*/
|
||||
int dom_documenttype_system_id_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_documenttype_system_id_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDtdPtr dtdptr;
|
||||
|
||||
dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
|
||||
if (dtdptr == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (dtdptr->SystemID) {
|
||||
ZVAL_STRING(*retval, (char *) (dtdptr->SystemID), 1);
|
||||
ZVAL_STRING(retval, (char *) (dtdptr->SystemID));
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
return SUCCESS;
|
||||
}
|
||||
@@ -184,38 +169,33 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-internalSubset
|
||||
Since: DOM Level 2
|
||||
*/
|
||||
int dom_documenttype_internal_subset_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_documenttype_internal_subset_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
|
||||
xmlDtdPtr dtdptr;
|
||||
xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
xmlDtd *intsubset;
|
||||
xmlOutputBuffer *buff = NULL;
|
||||
|
||||
dtdptr = (xmlDtdPtr) dom_object_get_node(obj);
|
||||
|
||||
if (dtdptr == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (dtdptr->doc != NULL && ((intsubset = dtdptr->doc->intSubset) != NULL)) {
|
||||
buff = xmlAllocOutputBuffer(NULL);
|
||||
if (buff != NULL) {
|
||||
xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL);
|
||||
xmlOutputBufferFlush(buff);
|
||||
#ifdef LIBXML2_NEW_BUFFER
|
||||
ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff), xmlOutputBufferGetSize(buff), 1);
|
||||
ZVAL_STRINGL(retval, xmlOutputBufferGetContent(buff), xmlOutputBufferGetSize(buff));
|
||||
#else
|
||||
ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1);
|
||||
ZVAL_STRINGL(retval, buff->buffer->content, buff->buffer->use);
|
||||
#endif
|
||||
(void)xmlOutputBufferClose(buff);
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
|
||||
return SUCCESS;
|
||||
|
||||
|
||||
@@ -126,10 +126,10 @@ static void php_dom_iterator_dtor(zend_object_iterator *iter TSRMLS_DC) /* {{{ *
|
||||
{
|
||||
php_dom_iterator *iterator = (php_dom_iterator *)iter;
|
||||
|
||||
zval_ptr_dtor((zval**)&iterator->intern.data);
|
||||
zval_ptr_dtor(&iterator->intern.data);
|
||||
|
||||
if (iterator->curobj) {
|
||||
zval_ptr_dtor((zval**)&iterator->curobj);
|
||||
zval_ptr_dtor(&iterator->curobj);
|
||||
}
|
||||
|
||||
efree(iterator);
|
||||
@@ -149,27 +149,27 @@ static int php_dom_iterator_valid(zend_object_iterator *iter TSRMLS_DC) /* {{{ *
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static void php_dom_iterator_current_data(zend_object_iterator *iter, zval ***data TSRMLS_DC) /* {{{ */
|
||||
zval *php_dom_iterator_current_data(zend_object_iterator *iter TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
php_dom_iterator *iterator = (php_dom_iterator *)iter;
|
||||
|
||||
*data = &iterator->curobj;
|
||||
return iterator->curobj;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static void php_dom_iterator_current_key(zend_object_iterator *iter, zval *key TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
php_dom_iterator *iterator = (php_dom_iterator *)iter;
|
||||
zval *object = (zval *)iterator->intern.data;
|
||||
zval *object = &iterator->intern.data;
|
||||
|
||||
if (instanceof_function(Z_OBJCE_P(object), dom_nodelist_class_entry TSRMLS_CC)) {
|
||||
ZVAL_LONG(key, iter->index);
|
||||
} else {
|
||||
dom_object *intern = (dom_object *)zend_object_store_get_object(iterator->curobj TSRMLS_CC);
|
||||
dom_object *intern = Z_DOMOBJ_P(iterator->curobj);
|
||||
|
||||
if (intern != NULL && intern->ptr != NULL) {
|
||||
xmlNodePtr curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->ptr)->node;
|
||||
ZVAL_STRINGL(key, (char *) curnode->name, xmlStrlen(curnode->name), 1);
|
||||
ZVAL_STRINGL(key, (char *) curnode->name, xmlStrlen(curnode->name));
|
||||
} else {
|
||||
ZVAL_NULL(key);
|
||||
}
|
||||
@@ -185,27 +185,28 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC)
|
||||
dom_object *intern;
|
||||
dom_object *nnmap;
|
||||
dom_nnodemap_object *objmap;
|
||||
int ret, previndex=0;
|
||||
int previndex=0;
|
||||
HashTable *nodeht;
|
||||
zval **entry;
|
||||
zval *entry;
|
||||
|
||||
php_dom_iterator *iterator = (php_dom_iterator *)iter;
|
||||
|
||||
object = (zval *)iterator->intern.data;
|
||||
nnmap = (dom_object *)zend_object_store_get_object(object TSRMLS_CC);
|
||||
object = &iterator->intern.data;
|
||||
nnmap = Z_DOMOBJ_P(object);
|
||||
objmap = (dom_nnodemap_object *)nnmap->ptr;
|
||||
|
||||
curobj = iterator->curobj;
|
||||
intern = (dom_object *)zend_object_store_get_object(curobj TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(curobj);
|
||||
if (intern != NULL && intern->ptr != NULL) {
|
||||
if (objmap->nodetype != XML_ENTITY_NODE &&
|
||||
objmap->nodetype != XML_NOTATION_NODE) {
|
||||
if (objmap->nodetype == DOM_NODESET) {
|
||||
nodeht = HASH_OF(objmap->baseobjptr);
|
||||
zend_hash_move_forward(nodeht);
|
||||
if (zend_hash_get_current_data(nodeht, (void **) &entry)==SUCCESS) {
|
||||
curattr = *entry;
|
||||
Z_ADDREF_P(curattr);
|
||||
if ((entry = zend_hash_get_current_data(nodeht))) {
|
||||
//???
|
||||
curattr = entry;
|
||||
if (Z_REFCOUNTED_P(curattr)) Z_ADDREF_P(curattr);
|
||||
}
|
||||
} else {
|
||||
curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->ptr)->node;
|
||||
@@ -235,10 +236,9 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC)
|
||||
}
|
||||
}
|
||||
err:
|
||||
zval_ptr_dtor((zval**)&curobj);
|
||||
zval_ptr_dtor(curobj);
|
||||
if (curnode) {
|
||||
MAKE_STD_ZVAL(curattr);
|
||||
curattr = php_dom_create_object(curnode, &ret, curattr, objmap->baseobj TSRMLS_CC);
|
||||
php_dom_create_object(curnode, curattr, objmap->baseobj TSRMLS_CC);
|
||||
}
|
||||
|
||||
iterator->curobj = curattr;
|
||||
@@ -260,9 +260,9 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i
|
||||
dom_nnodemap_object *objmap;
|
||||
xmlNodePtr nodep, curnode=NULL;
|
||||
zval *curattr = NULL;
|
||||
int ret, curindex = 0;
|
||||
int curindex = 0;
|
||||
HashTable *nodeht;
|
||||
zval **entry;
|
||||
zval *entry;
|
||||
php_dom_iterator *iterator;
|
||||
|
||||
if (by_ref) {
|
||||
@@ -270,11 +270,10 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i
|
||||
}
|
||||
iterator = emalloc(sizeof(php_dom_iterator));
|
||||
|
||||
Z_ADDREF_P(object);
|
||||
iterator->intern.data = (void*)object;
|
||||
ZVAL_COPY(&iterator->intern.data, object);
|
||||
iterator->intern.funcs = &php_dom_iterator_funcs;
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(object TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(object);
|
||||
objmap = (dom_nnodemap_object *)intern->ptr;
|
||||
if (objmap != NULL) {
|
||||
if (objmap->nodetype != XML_ENTITY_NODE &&
|
||||
@@ -282,9 +281,9 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i
|
||||
if (objmap->nodetype == DOM_NODESET) {
|
||||
nodeht = HASH_OF(objmap->baseobjptr);
|
||||
zend_hash_internal_pointer_reset(nodeht);
|
||||
if (zend_hash_get_current_data(nodeht, (void **) &entry)==SUCCESS) {
|
||||
curattr = *entry;
|
||||
Z_ADDREF_P(curattr);
|
||||
if ((entry = zend_hash_get_current_data(nodeht))) {
|
||||
curattr = entry;
|
||||
if (Z_REFCOUNTED_P(curattr)) Z_ADDREF_P(curattr);
|
||||
}
|
||||
} else {
|
||||
nodep = (xmlNode *)dom_object_get_node(objmap->baseobj);
|
||||
@@ -316,8 +315,7 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i
|
||||
}
|
||||
err:
|
||||
if (curnode) {
|
||||
MAKE_STD_ZVAL(curattr);
|
||||
curattr = php_dom_create_object(curnode, &ret, curattr, objmap->baseobj TSRMLS_CC);
|
||||
php_dom_create_object(curnode, curattr, objmap->baseobj TSRMLS_CC);
|
||||
}
|
||||
|
||||
iterator->curobj = curattr;
|
||||
|
||||
@@ -46,10 +46,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-severity
|
||||
Since:
|
||||
*/
|
||||
int dom_domerror_severity_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domerror_severity_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -60,10 +59,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-message
|
||||
Since:
|
||||
*/
|
||||
int dom_domerror_message_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domerror_message_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -74,10 +72,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-type
|
||||
Since:
|
||||
*/
|
||||
int dom_domerror_type_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domerror_type_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -88,10 +85,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-relatedException
|
||||
Since:
|
||||
*/
|
||||
int dom_domerror_related_exception_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domerror_related_exception_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -102,10 +98,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-relatedData
|
||||
Since:
|
||||
*/
|
||||
int dom_domerror_related_data_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domerror_related_data_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -116,10 +111,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-location
|
||||
Since:
|
||||
*/
|
||||
int dom_domerror_location_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domerror_location_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,10 +52,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-length
|
||||
Since:
|
||||
*/
|
||||
int dom_domimplementationlist_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domimplementationlist_length_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -46,10 +46,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-line-number
|
||||
Since:
|
||||
*/
|
||||
int dom_domlocator_line_number_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domlocator_line_number_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -60,10 +59,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-column-number
|
||||
Since:
|
||||
*/
|
||||
int dom_domlocator_column_number_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domlocator_column_number_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -74,10 +72,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-offset
|
||||
Since:
|
||||
*/
|
||||
int dom_domlocator_offset_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domlocator_offset_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -88,10 +85,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-node
|
||||
Since:
|
||||
*/
|
||||
int dom_domlocator_related_node_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domlocator_related_node_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -102,10 +98,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-uri
|
||||
Since:
|
||||
*/
|
||||
int dom_domlocator_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domlocator_uri_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,10 +52,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-length
|
||||
Since:
|
||||
*/
|
||||
int dom_domstringlist_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_domstringlist_length_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, "TEST", 1);
|
||||
ZVAL_STRING(retval, "TEST");
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -219,14 +219,12 @@ PHP_METHOD(domelement, __construct)
|
||||
xmlNodeSetContentLen(nodep, (xmlChar *) value, value_len);
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
if (intern != NULL) {
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
}
|
||||
/* }}} end DOMElement::__construct */
|
||||
|
||||
@@ -235,7 +233,7 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-104682815
|
||||
Since:
|
||||
*/
|
||||
int dom_element_tag_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_element_tag_name_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNodePtr nodep;
|
||||
xmlNsPtr ns;
|
||||
@@ -248,16 +246,15 @@ int dom_element_tag_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
ns = nodep->ns;
|
||||
if (ns != NULL && ns->prefix) {
|
||||
qname = xmlStrdup(ns->prefix);
|
||||
qname = xmlStrcat(qname, (xmlChar *)":");
|
||||
qname = xmlStrcat(qname, nodep->name);
|
||||
ZVAL_STRING(*retval, (char *)qname, 1);
|
||||
ZVAL_STRING(retval, (char *)qname);
|
||||
xmlFree(qname);
|
||||
} else {
|
||||
ZVAL_STRING(*retval, (char *) nodep->name, 1);
|
||||
ZVAL_STRING(retval, (char *) nodep->name);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -270,10 +267,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Element-schemaTypeInfo
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_element_schema_type_info_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_element_schema_type_info_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -359,7 +355,7 @@ PHP_FUNCTION(dom_element_get_attribute)
|
||||
if (value == NULL) {
|
||||
RETURN_EMPTY_STRING();
|
||||
} else {
|
||||
RETVAL_STRING((char *)value, 1);
|
||||
RETVAL_STRING((char *)value);
|
||||
xmlFree(value);
|
||||
}
|
||||
}
|
||||
@@ -648,7 +644,7 @@ PHP_FUNCTION(dom_element_get_elements_by_tag_name)
|
||||
DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
|
||||
|
||||
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
|
||||
namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
|
||||
namednode = Z_DOMOBJ_P(return_value);
|
||||
local = xmlCharStrndup(name, name_len);
|
||||
dom_namednode_iter(intern, 0, namednode, NULL, local, NULL TSRMLS_CC);
|
||||
}
|
||||
@@ -677,13 +673,13 @@ PHP_FUNCTION(dom_element_get_attribute_ns)
|
||||
strattr = xmlGetNsProp(elemp, (xmlChar *) name, (xmlChar *) uri);
|
||||
|
||||
if (strattr != NULL) {
|
||||
RETVAL_STRING((char *)strattr, 1);
|
||||
RETVAL_STRING((char *)strattr);
|
||||
xmlFree(strattr);
|
||||
} else {
|
||||
if (xmlStrEqual((xmlChar *) uri, (xmlChar *)DOM_XMLNS_NAMESPACE)) {
|
||||
nsptr = dom_get_nsdecl(elemp, (xmlChar *)name);
|
||||
if (nsptr != NULL) {
|
||||
RETVAL_STRING((char *) nsptr->href, 1);
|
||||
RETVAL_STRING((char *) nsptr->href);
|
||||
} else {
|
||||
RETVAL_EMPTY_STRING();
|
||||
}
|
||||
@@ -1042,7 +1038,7 @@ PHP_FUNCTION(dom_element_get_elements_by_tag_name_ns)
|
||||
DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
|
||||
|
||||
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
|
||||
namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
|
||||
namednode = Z_DOMOBJ_P(return_value);
|
||||
local = xmlCharStrndup(name, name_len);
|
||||
nsuri = xmlCharStrndup(uri, uri_len);
|
||||
dom_namednode_iter(intern, 0, namednode, NULL, local, nsuri TSRMLS_CC);
|
||||
|
||||
@@ -44,22 +44,19 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-D7303025
|
||||
Since:
|
||||
*/
|
||||
int dom_entity_public_id_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_entity_public_id_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlEntity *nodep;
|
||||
|
||||
nodep = (xmlEntity *) dom_object_get_node(obj);
|
||||
xmlEntity *nodep = (xmlEntity *) dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
} else {
|
||||
ZVAL_STRING(*retval, (char *) (nodep->ExternalID), 1);
|
||||
ZVAL_STRING(retval, (char *) (nodep->ExternalID));
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -72,22 +69,19 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-D7C29F3E
|
||||
Since:
|
||||
*/
|
||||
int dom_entity_system_id_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_entity_system_id_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlEntity *nodep;
|
||||
|
||||
nodep = (xmlEntity *) dom_object_get_node(obj);
|
||||
xmlEntity *nodep = (xmlEntity *) dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
} else {
|
||||
ZVAL_STRING(*retval, (char *) (nodep->SystemID), 1);
|
||||
ZVAL_STRING(retval, (char *) (nodep->SystemID));
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -100,24 +94,21 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-6ABAEB38
|
||||
Since:
|
||||
*/
|
||||
int dom_entity_notation_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_entity_notation_name_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlEntity *nodep;
|
||||
xmlEntity *nodep = (xmlEntity *) dom_object_get_node(obj);
|
||||
char *content;
|
||||
|
||||
nodep = (xmlEntity *) dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
} else {
|
||||
content = xmlNodeGetContent((xmlNodePtr) nodep);
|
||||
ZVAL_STRING(*retval, content, 1);
|
||||
ZVAL_STRING(retval, content);
|
||||
xmlFree(content);
|
||||
}
|
||||
|
||||
@@ -131,10 +122,9 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Entity3-actualEncoding
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_entity_actual_encoding_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_entity_actual_encoding_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -150,10 +140,9 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Entity3-encoding
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_entity_encoding_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_entity_encoding_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -169,10 +158,9 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Entity3-version
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_entity_version_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_entity_version_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ PHP_METHOD(domentityreference, __construct)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
if (intern != NULL) {
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
|
||||
@@ -83,7 +83,7 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D0FB19E
|
||||
Since:
|
||||
*/
|
||||
int dom_namednodemap_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_namednodemap_length_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_nnodemap_object *objmap;
|
||||
xmlAttrPtr curnode;
|
||||
@@ -113,8 +113,7 @@ int dom_namednodemap_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
}
|
||||
}
|
||||
|
||||
MAKE_STD_ZVAL(*retval);
|
||||
ZVAL_LONG(*retval, count);
|
||||
ZVAL_LONG(retval, count);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -140,7 +139,7 @@ PHP_FUNCTION(dom_namednodemap_get_named_item)
|
||||
return;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
|
||||
objmap = (dom_nnodemap_object *)intern->ptr;
|
||||
|
||||
@@ -214,7 +213,7 @@ PHP_FUNCTION(dom_namednodemap_item)
|
||||
return;
|
||||
}
|
||||
if (index >= 0) {
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
|
||||
objmap = (dom_nnodemap_object *)intern->ptr;
|
||||
|
||||
@@ -272,7 +271,7 @@ PHP_FUNCTION(dom_namednodemap_get_named_item_ns)
|
||||
return;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
|
||||
objmap = (dom_nnodemap_object *)intern->ptr;
|
||||
|
||||
|
||||
288
ext/dom/node.c
288
ext/dom/node.c
@@ -196,7 +196,7 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68D095
|
||||
Since:
|
||||
*/
|
||||
int dom_node_node_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_node_name_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNsPtr ns;
|
||||
@@ -262,12 +262,10 @@ int dom_node_node_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Node Type");
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if(str != NULL) {
|
||||
ZVAL_STRING(*retval, str, 1);
|
||||
if (str != NULL) {
|
||||
ZVAL_STRING(retval, str);
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
|
||||
if (qname != NULL) {
|
||||
@@ -285,13 +283,11 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68D080
|
||||
Since:
|
||||
*/
|
||||
int dom_node_node_value_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_node_value_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
char *str = NULL;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
@@ -315,26 +311,20 @@ int dom_node_node_value_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
break;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if(str != NULL) {
|
||||
ZVAL_STRING(*retval, str, 1);
|
||||
ZVAL_STRING(retval, str);
|
||||
xmlFree(str);
|
||||
} else {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
}
|
||||
|
||||
|
||||
return SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
int dom_node_node_value_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
zval value_copy;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
@@ -352,19 +342,12 @@ int dom_node_node_value_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
case XML_COMMENT_NODE:
|
||||
case XML_CDATA_SECTION_NODE:
|
||||
case XML_PI_NODE:
|
||||
if (newval->type != IS_STRING) {
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_string(newval);
|
||||
{
|
||||
zend_string *str = zval_get_string(newval TSRMLS_CC);
|
||||
xmlNodeSetContentLen(nodep, str->val, str->len + 1);
|
||||
STR_RELEASE(str);
|
||||
break;
|
||||
}
|
||||
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -379,7 +362,7 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-111237558
|
||||
Since:
|
||||
*/
|
||||
int dom_node_node_type_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_node_type_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
|
||||
@@ -390,13 +373,11 @@ int dom_node_node_type_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
/* Specs dictate that they are both type XML_DOCUMENT_TYPE_NODE */
|
||||
if (nodep->type == XML_DTD_NODE) {
|
||||
ZVAL_LONG(*retval, XML_DOCUMENT_TYPE_NODE);
|
||||
ZVAL_LONG(retval, XML_DOCUMENT_TYPE_NODE);
|
||||
} else {
|
||||
ZVAL_LONG(*retval, nodep->type);
|
||||
ZVAL_LONG(retval, nodep->type);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -409,10 +390,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1060184317
|
||||
Since:
|
||||
*/
|
||||
int dom_node_parent_node_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_parent_node_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep, *nodeparent;
|
||||
int ret;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
@@ -421,18 +401,13 @@ int dom_node_parent_node_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
nodeparent = nodep->parent;
|
||||
if (!nodeparent) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if (NULL == (*retval = php_dom_create_object(nodeparent, &ret, *retval, obj TSRMLS_CC))) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
|
||||
return FAILURE;
|
||||
}
|
||||
php_dom_create_object(nodeparent, retval, obj TSRMLS_CC);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -443,25 +418,21 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1451460987
|
||||
Since:
|
||||
*/
|
||||
int dom_node_child_nodes_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_child_nodes_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
dom_object *intern;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (dom_node_children_valid(nodep) == FAILURE) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
} else {
|
||||
php_dom_create_interator(*retval, DOM_NODELIST TSRMLS_CC);
|
||||
intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
|
||||
php_dom_create_interator(retval, DOM_NODELIST TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(retval);
|
||||
dom_namednode_iter(obj, XML_ELEMENT_NODE, intern, NULL, NULL, NULL TSRMLS_CC);
|
||||
}
|
||||
|
||||
@@ -475,10 +446,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-169727388
|
||||
Since:
|
||||
*/
|
||||
int dom_node_first_child_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_first_child_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep, *first = NULL;
|
||||
int ret;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
@@ -491,17 +461,12 @@ int dom_node_first_child_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
first = nodep->children;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (!first) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if (NULL == (*retval = php_dom_create_object(first, &ret, *retval, obj TSRMLS_CC))) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
|
||||
return FAILURE;
|
||||
}
|
||||
php_dom_create_object(first, retval, obj TSRMLS_CC);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -512,10 +477,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-61AD09FB
|
||||
Since:
|
||||
*/
|
||||
int dom_node_last_child_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_last_child_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep, *last = NULL;
|
||||
int ret;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
@@ -528,17 +492,12 @@ int dom_node_last_child_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
last = nodep->last;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (!last) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if (NULL == (*retval = php_dom_create_object(last, &ret, *retval, obj TSRMLS_CC))) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
|
||||
return FAILURE;
|
||||
}
|
||||
php_dom_create_object(last, retval, obj TSRMLS_CC);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -549,10 +508,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-640FB3C8
|
||||
Since:
|
||||
*/
|
||||
int dom_node_previous_sibling_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_previous_sibling_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep, *prevsib;
|
||||
int ret;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
@@ -561,18 +519,13 @@ int dom_node_previous_sibling_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
prevsib = nodep->prev;
|
||||
if (!prevsib) {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if (NULL == (*retval = php_dom_create_object(prevsib, &ret, *retval, obj TSRMLS_CC))) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
|
||||
return FAILURE;
|
||||
}
|
||||
php_dom_create_object(prevsib, retval, obj TSRMLS_CC);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -583,10 +536,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6AC54C2F
|
||||
Since:
|
||||
*/
|
||||
int dom_node_next_sibling_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_next_sibling_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep, *nextsib;
|
||||
int ret;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
@@ -600,12 +552,7 @@ int dom_node_next_sibling_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (NULL == (*retval = php_dom_create_object(nextsib, &ret, *retval, obj TSRMLS_CC))) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
|
||||
return FAILURE;
|
||||
}
|
||||
php_dom_create_object(nextsib, retval, obj TSRMLS_CC);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -616,26 +563,22 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-84CF096
|
||||
Since:
|
||||
*/
|
||||
int dom_node_attributes_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_attributes_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
dom_object *intern;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (nodep->type == XML_ELEMENT_NODE) {
|
||||
php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC);
|
||||
intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC);
|
||||
php_dom_create_interator(retval, DOM_NAMEDNODEMAP TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(retval);
|
||||
dom_namednode_iter(obj, XML_ATTRIBUTE_NODE, intern, NULL, NULL, NULL TSRMLS_CC);
|
||||
} else {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -648,13 +591,10 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-node-ownerDoc
|
||||
Since:
|
||||
*/
|
||||
int dom_node_owner_document_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_owner_document_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
xmlDocPtr docp;
|
||||
int ret;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
@@ -662,8 +602,7 @@ int dom_node_owner_document_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
}
|
||||
|
||||
if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) {
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -672,12 +611,7 @@ int dom_node_owner_document_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (NULL == (*retval = php_dom_create_object((xmlNodePtr) docp, &ret, *retval, obj TSRMLS_CC))) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
|
||||
return FAILURE;
|
||||
}
|
||||
php_dom_create_object((xmlNodePtr) docp, retval, obj TSRMLS_CC);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -688,13 +622,11 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeNSname
|
||||
Since: DOM Level 2
|
||||
*/
|
||||
int dom_node_namespace_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_namespace_uri_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
char *str = NULL;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
@@ -713,12 +645,10 @@ int dom_node_namespace_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
break;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if(str != NULL) {
|
||||
ZVAL_STRING(*retval, str, 1);
|
||||
if (str != NULL) {
|
||||
ZVAL_STRING(retval, str);
|
||||
} else {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -731,14 +661,12 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeNSPrefix
|
||||
Since: DOM Level 2
|
||||
*/
|
||||
int dom_node_prefix_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_prefix_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
xmlNsPtr ns;
|
||||
char *str = NULL;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
@@ -758,12 +686,10 @@ int dom_node_prefix_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
break;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (str == NULL) {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
} else {
|
||||
ZVAL_STRING(*retval, str, 1);
|
||||
ZVAL_STRING(retval, str);
|
||||
}
|
||||
return SUCCESS;
|
||||
|
||||
@@ -771,7 +697,7 @@ int dom_node_prefix_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
|
||||
int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
zend_string *str;
|
||||
xmlNode *nodep, *nsnode = NULL;
|
||||
xmlNsPtr ns = NULL, curns;
|
||||
char *strURI;
|
||||
@@ -794,15 +720,8 @@ int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
nsnode = xmlDocGetRootElement(nodep->doc);
|
||||
}
|
||||
}
|
||||
if (newval->type != IS_STRING) {
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_string(newval);
|
||||
}
|
||||
prefix = Z_STRVAL_P(newval);
|
||||
str = zval_get_string(newval TSRMLS_CC);
|
||||
prefix = str->val;
|
||||
if (nsnode && nodep->ns != NULL && !xmlStrEqual(nodep->ns->prefix, (xmlChar *)prefix)) {
|
||||
strURI = (char *) nodep->ns->href;
|
||||
if (strURI == NULL ||
|
||||
@@ -826,18 +745,14 @@ int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
}
|
||||
|
||||
if (ns == NULL) {
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
STR_RELEASE(str);
|
||||
php_dom_throw_error(NAMESPACE_ERR, dom_get_strict_error(obj->document) TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
xmlSetNs(nodep, ns);
|
||||
}
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
STR_RELEASE(str);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -853,23 +768,19 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeNSLocalN
|
||||
Since: DOM Level 2
|
||||
*/
|
||||
int dom_node_local_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_local_name_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if (nodep->type == XML_ELEMENT_NODE || nodep->type == XML_ATTRIBUTE_NODE || nodep->type == XML_NAMESPACE_DECL) {
|
||||
ZVAL_STRING(*retval, (char *) (nodep->name), 1);
|
||||
ZVAL_STRING(retval, (char *) (nodep->name));
|
||||
} else {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -882,26 +793,22 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-baseURI
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_node_base_uri_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_base_uri_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
xmlChar *baseuri;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
baseuri = xmlNodeGetBase(nodep->doc, nodep);
|
||||
if (baseuri) {
|
||||
ZVAL_STRING(*retval, (char *) (baseuri), 1);
|
||||
ZVAL_STRING(retval, (char *) (baseuri));
|
||||
xmlFree(baseuri);
|
||||
} else {
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -914,13 +821,11 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-textContent
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_node_text_content_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_node_text_content_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNode *nodep;
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
char *str = NULL;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
@@ -928,13 +833,11 @@ int dom_node_text_content_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
|
||||
str = xmlNodeGetContent(nodep);
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
if(str != NULL) {
|
||||
ZVAL_STRING(*retval, str, 1);
|
||||
if (str != NULL) {
|
||||
ZVAL_STRING(retval, str);
|
||||
xmlFree(str);
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -1629,7 +1532,7 @@ PHP_FUNCTION(dom_node_lookup_prefix)
|
||||
|
||||
if (lookupp != NULL && (nsptr = xmlSearchNsByHref(lookupp->doc, lookupp, uri))) {
|
||||
if (nsptr->prefix != NULL) {
|
||||
RETURN_STRING((char *) nsptr->prefix, 1);
|
||||
RETURN_STRING((char *) nsptr->prefix);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1698,7 +1601,7 @@ PHP_FUNCTION(dom_node_lookup_namespace_uri)
|
||||
|
||||
nsptr = xmlSearchNs(nodep->doc, nodep, prefix);
|
||||
if (nsptr && nsptr->href != NULL) {
|
||||
RETURN_STRING((char *) nsptr->href, 1);
|
||||
RETURN_STRING((char *) nsptr->href);
|
||||
}
|
||||
|
||||
RETURN_NULL();
|
||||
@@ -1804,12 +1707,12 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{
|
||||
} else {
|
||||
/*xpath query from xpath_array */
|
||||
HashTable *ht = Z_ARRVAL_P(xpath_array);
|
||||
zval **tmp;
|
||||
zval *tmp;
|
||||
char *xquery;
|
||||
|
||||
if (zend_hash_find(ht, "query", sizeof("query"), (void**)&tmp) == SUCCESS &&
|
||||
Z_TYPE_PP(tmp) == IS_STRING) {
|
||||
xquery = Z_STRVAL_PP(tmp);
|
||||
tmp = zend_hash_str_find(ht, "query", sizeof("query")-1);
|
||||
if (tmp && Z_TYPE_P(tmp) == IS_STRING) {
|
||||
xquery = Z_STRVAL_P(tmp);
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "'query' missing from xpath array or is not a string");
|
||||
RETURN_FALSE;
|
||||
@@ -1818,21 +1721,20 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{
|
||||
ctxp = xmlXPathNewContext(docp);
|
||||
ctxp->node = nodep;
|
||||
|
||||
if (zend_hash_find(ht, "namespaces", sizeof("namespaces"), (void**)&tmp) == SUCCESS &&
|
||||
Z_TYPE_PP(tmp) == IS_ARRAY) {
|
||||
zval **tmpns;
|
||||
while (zend_hash_get_current_data(Z_ARRVAL_PP(tmp), (void **)&tmpns) == SUCCESS) {
|
||||
if (Z_TYPE_PP(tmpns) == IS_STRING) {
|
||||
char *prefix;
|
||||
tmp = zend_hash_str_find(ht, "namespaces", sizeof("namespaces")-1);
|
||||
if (tmp && Z_TYPE_P(tmp) == IS_ARRAY) {
|
||||
zval *tmpns;
|
||||
while ((tmpns = zend_hash_get_current_data(Z_ARRVAL_P(tmp)))) {
|
||||
if (Z_TYPE_P(tmpns) == IS_STRING) {
|
||||
zend_string *prefix;
|
||||
ulong idx;
|
||||
uint prefix_key_len;
|
||||
|
||||
if (zend_hash_get_current_key_ex(Z_ARRVAL_PP(tmp),
|
||||
&prefix, &prefix_key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) {
|
||||
xmlXPathRegisterNs(ctxp, prefix, Z_STRVAL_PP(tmpns));
|
||||
if (zend_hash_get_current_key_ex(Z_ARRVAL_P(tmp),
|
||||
&prefix, &idx, 0, NULL) == HASH_KEY_IS_STRING) {
|
||||
xmlXPathRegisterNs(ctxp, prefix->val, Z_STRVAL_P(tmpns));
|
||||
}
|
||||
}
|
||||
zend_hash_move_forward(Z_ARRVAL_PP(tmp));
|
||||
zend_hash_move_forward(Z_ARRVAL_P(tmp));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1852,14 +1754,14 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{
|
||||
|
||||
if (ns_prefixes != NULL) {
|
||||
if (exclusive) {
|
||||
zval **tmpns;
|
||||
zval *tmpns;
|
||||
int nscount = 0;
|
||||
|
||||
inclusive_ns_prefixes = safe_emalloc(zend_hash_num_elements(Z_ARRVAL_P(ns_prefixes)) + 1,
|
||||
sizeof(xmlChar *), 0);
|
||||
while (zend_hash_get_current_data(Z_ARRVAL_P(ns_prefixes), (void **)&tmpns) == SUCCESS) {
|
||||
if (Z_TYPE_PP(tmpns) == IS_STRING) {
|
||||
inclusive_ns_prefixes[nscount++] = Z_STRVAL_PP(tmpns);
|
||||
while ((tmpns = zend_hash_get_current_data(Z_ARRVAL_P(ns_prefixes)))) {
|
||||
if (Z_TYPE_P(tmpns) == IS_STRING) {
|
||||
inclusive_ns_prefixes[nscount++] = Z_STRVAL_P(tmpns);
|
||||
}
|
||||
zend_hash_move_forward(Z_ARRVAL_P(ns_prefixes));
|
||||
}
|
||||
@@ -1902,9 +1804,9 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{
|
||||
#endif
|
||||
if (ret > 0) {
|
||||
#ifdef LIBXML2_NEW_BUFFER
|
||||
RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret, 1);
|
||||
RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret);
|
||||
#else
|
||||
RETVAL_STRINGL((char *) buf->buffer->content, ret, 1);
|
||||
RETVAL_STRINGL((char *) buf->buffer->content, ret);
|
||||
#endif
|
||||
} else {
|
||||
RETVAL_EMPTY_STRING();
|
||||
@@ -1954,7 +1856,7 @@ PHP_METHOD(domnode, getNodePath)
|
||||
if (value == NULL) {
|
||||
RETURN_NULL();
|
||||
} else {
|
||||
RETVAL_STRING(value, 1);
|
||||
RETVAL_STRING(value);
|
||||
xmlFree(value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-203510337
|
||||
Since:
|
||||
*/
|
||||
int dom_nodelist_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_nodelist_length_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
dom_nnodemap_object *objmap;
|
||||
xmlNodePtr nodep, curnode;
|
||||
@@ -91,8 +91,7 @@ int dom_nodelist_length_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
}
|
||||
}
|
||||
|
||||
MAKE_STD_ZVAL(*retval);
|
||||
ZVAL_LONG(*retval, count);
|
||||
ZVAL_LONG(retval, count);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -113,15 +112,13 @@ PHP_FUNCTION(dom_nodelist_item)
|
||||
dom_nnodemap_object *objmap;
|
||||
xmlNodePtr nodep, curnode;
|
||||
int count = 0;
|
||||
HashTable *nodeht;
|
||||
zval **entry;
|
||||
|
||||
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &id, dom_nodelist_class_entry, &index) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (index >= 0) {
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
|
||||
objmap = (dom_nnodemap_object *)intern->ptr;
|
||||
if (objmap != NULL) {
|
||||
@@ -133,10 +130,10 @@ PHP_FUNCTION(dom_nodelist_item)
|
||||
}
|
||||
} else {
|
||||
if (objmap->nodetype == DOM_NODESET) {
|
||||
nodeht = HASH_OF(objmap->baseobjptr);
|
||||
if (zend_hash_index_find(nodeht, index, (void **) &entry)==SUCCESS) {
|
||||
*return_value = **entry;
|
||||
zval_copy_ctor(return_value);
|
||||
HashTable *nodeht = HASH_OF(objmap->baseobjptr);
|
||||
zval *entry = zend_hash_index_find(nodeht, index);
|
||||
if (entry) {
|
||||
ZVAL_COPY(return_value, entry);
|
||||
return;
|
||||
}
|
||||
} else if (objmap->baseobj) {
|
||||
|
||||
@@ -45,22 +45,19 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-54F2B4D0
|
||||
Since:
|
||||
*/
|
||||
int dom_notation_public_id_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_notation_public_id_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlEntityPtr nodep;
|
||||
|
||||
nodep = (xmlEntityPtr) dom_object_get_node(obj);
|
||||
xmlEntityPtr nodep = (xmlEntityPtr) dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (nodep->ExternalID) {
|
||||
ZVAL_STRING(*retval, (char *) (nodep->ExternalID), 1);
|
||||
ZVAL_STRING(retval, (char *) (nodep->ExternalID));
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -73,22 +70,19 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-E8AAB1D0
|
||||
Since:
|
||||
*/
|
||||
int dom_notation_system_id_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_notation_system_id_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlEntityPtr nodep;
|
||||
|
||||
nodep = (xmlEntityPtr) dom_object_get_node(obj);
|
||||
xmlEntityPtr nodep = (xmlEntityPtr) dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (nodep->SystemID) {
|
||||
ZVAL_STRING(*retval, (char *) (nodep->SystemID), 1);
|
||||
ZVAL_STRING(retval, (char *) (nodep->SystemID));
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
|
||||
@@ -469,8 +469,8 @@ void *php_dom_export_node(zval *object TSRMLS_DC) /* {{{ */
|
||||
php_libxml_node_object *intern;
|
||||
xmlNodePtr nodep = NULL;
|
||||
|
||||
intern = (php_libxml_node_object *)zend_object_store_get_object(object TSRMLS_CC);
|
||||
if (intern && intern->node) {
|
||||
intern = Z_DOMOBJ_P(object);
|
||||
if (intern->node) {
|
||||
nodep = intern->node->node;
|
||||
}
|
||||
|
||||
@@ -491,7 +491,7 @@ PHP_FUNCTION(dom_import_simplexml)
|
||||
return;
|
||||
}
|
||||
|
||||
nodeobj = (php_libxml_node_object *)zend_object_store_get_object(node TSRMLS_CC);
|
||||
nodeobj = Z_DOMOBJ_P(node);
|
||||
nodep = php_libxml_import_node(node TSRMLS_CC);
|
||||
|
||||
if (nodep && nodeobj && (nodep->type == XML_ELEMENT_NODE || nodep->type == XML_ATTRIBUTE_NODE)) {
|
||||
|
||||
@@ -50,7 +50,6 @@ const zend_function_entry php_dom_processinginstruction_class_functions[] = {
|
||||
/* {{{ proto void DOMProcessingInstruction::__construct(string name, [string value]); */
|
||||
PHP_METHOD(domprocessinginstruction, __construct)
|
||||
{
|
||||
|
||||
zval *id;
|
||||
xmlNodePtr nodep = NULL, oldnode = NULL;
|
||||
dom_object *intern;
|
||||
@@ -79,14 +78,12 @@ PHP_METHOD(domprocessinginstruction, __construct)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
if (intern != NULL) {
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
php_libxml_node_free_resource(oldnode TSRMLS_CC);
|
||||
}
|
||||
php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC);
|
||||
}
|
||||
/* }}} end DOMProcessingInstruction::__construct */
|
||||
|
||||
@@ -95,19 +92,16 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-1478689192
|
||||
Since:
|
||||
*/
|
||||
int dom_processinginstruction_target_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_processinginstruction_target_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNodePtr nodep;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
xmlNodePtr nodep = dom_object_get_node(obj);
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_STRING(*retval, (char *) (nodep->name), 1);
|
||||
ZVAL_STRING(retval, (char *) (nodep->name));
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
@@ -119,7 +113,7 @@ readonly=no
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-837822393
|
||||
Since:
|
||||
*/
|
||||
int dom_processinginstruction_data_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_processinginstruction_data_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNodePtr nodep;
|
||||
xmlChar *content;
|
||||
@@ -131,14 +125,11 @@ int dom_processinginstruction_data_read(dom_object *obj, zval **retval TSRMLS_DC
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
|
||||
|
||||
if ((content = xmlNodeGetContent(nodep)) != NULL) {
|
||||
ZVAL_STRING(*retval, content, 1);
|
||||
ZVAL_STRING(retval, content);
|
||||
xmlFree(content);
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -146,31 +137,19 @@ int dom_processinginstruction_data_read(dom_object *obj, zval **retval TSRMLS_DC
|
||||
|
||||
int dom_processinginstruction_data_write(dom_object *obj, zval *newval TSRMLS_DC)
|
||||
{
|
||||
zval value_copy;
|
||||
xmlNode *nodep;
|
||||
|
||||
nodep = dom_object_get_node(obj);
|
||||
xmlNode *nodep = dom_object_get_node(obj);
|
||||
zend_string *str;
|
||||
|
||||
if (nodep == NULL) {
|
||||
php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (newval->type != IS_STRING) {
|
||||
if(Z_REFCOUNT_P(newval) > 1) {
|
||||
value_copy = *newval;
|
||||
zval_copy_ctor(&value_copy);
|
||||
newval = &value_copy;
|
||||
}
|
||||
convert_to_string(newval);
|
||||
}
|
||||
str = zval_get_string(newval TSRMLS_CC);
|
||||
|
||||
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
|
||||
|
||||
if (newval == &value_copy) {
|
||||
zval_dtor(newval);
|
||||
}
|
||||
xmlNodeSetContentLen(nodep, str->val, str->len + 1);
|
||||
|
||||
STR_RELEASE(str);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ PHP_METHOD(domtext, __construct)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
if (intern != NULL) {
|
||||
oldnode = dom_object_get_node(intern);
|
||||
if (oldnode != NULL) {
|
||||
@@ -102,7 +102,7 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-wholeText
|
||||
Since: DOM Level 3
|
||||
*/
|
||||
int dom_text_whole_text_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_text_whole_text_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlNodePtr node;
|
||||
xmlChar *wholetext = NULL;
|
||||
@@ -125,12 +125,11 @@ int dom_text_whole_text_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
node = node->next;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
if (wholetext != NULL) {
|
||||
ZVAL_STRING(*retval, wholetext, 1);
|
||||
ZVAL_STRING(retval, wholetext);
|
||||
xmlFree(wholetext);
|
||||
} else {
|
||||
ZVAL_EMPTY_STRING(*retval);
|
||||
ZVAL_EMPTY_STRING(retval);
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@@ -151,7 +150,6 @@ PHP_FUNCTION(dom_text_split_text)
|
||||
xmlNodePtr node;
|
||||
xmlNodePtr nnode;
|
||||
long offset;
|
||||
int ret;
|
||||
int length;
|
||||
dom_object *intern;
|
||||
|
||||
@@ -196,7 +194,7 @@ PHP_FUNCTION(dom_text_split_text)
|
||||
nnode->type = XML_TEXT_NODE;
|
||||
}
|
||||
|
||||
return_value = php_dom_create_object(nnode, &ret, return_value, intern TSRMLS_CC);
|
||||
php_dom_create_object(nnode, return_value, intern TSRMLS_CC);
|
||||
}
|
||||
/* }}} end dom_text_split_text */
|
||||
|
||||
|
||||
@@ -46,10 +46,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#TypeInfo-typeName
|
||||
Since:
|
||||
*/
|
||||
int dom_typeinfo_type_name_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_typeinfo_type_name_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -60,10 +59,9 @@ readonly=yes
|
||||
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#TypeInfo-typeNamespace
|
||||
Since:
|
||||
*/
|
||||
int dom_typeinfo_type_namespace_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_typeinfo_type_namespace_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
ALLOC_ZVAL(*retval);
|
||||
ZVAL_NULL(*retval);
|
||||
ZVAL_NULL(retval);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
161
ext/dom/xpath.c
161
ext/dom/xpath.c
@@ -74,15 +74,13 @@ const zend_function_entry php_dom_xpath_class_functions[] = {
|
||||
|
||||
static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int type) /* {{{ */
|
||||
{
|
||||
zval **args = NULL;
|
||||
zval *retval;
|
||||
int result, i, ret;
|
||||
zval retval;
|
||||
int result, i;
|
||||
int error = 0;
|
||||
zend_fcall_info fci;
|
||||
zval handler;
|
||||
xmlXPathObjectPtr obj;
|
||||
char *str;
|
||||
char *callable = NULL;
|
||||
zend_string *callable = NULL;
|
||||
dom_xpath_object *intern;
|
||||
|
||||
TSRMLS_FETCH();
|
||||
@@ -115,36 +113,33 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs,
|
||||
|
||||
fci.param_count = nargs - 1;
|
||||
if (fci.param_count > 0) {
|
||||
fci.params = safe_emalloc(fci.param_count, sizeof(zval**), 0);
|
||||
args = safe_emalloc(fci.param_count, sizeof(zval *), 0);
|
||||
fci.params = safe_emalloc(fci.param_count, sizeof(zval), 0);
|
||||
}
|
||||
/* Reverse order to pop values off ctxt stack */
|
||||
for (i = nargs - 2; i >= 0; i--) {
|
||||
obj = valuePop(ctxt);
|
||||
MAKE_STD_ZVAL(args[i]);
|
||||
switch (obj->type) {
|
||||
case XPATH_STRING:
|
||||
ZVAL_STRING(args[i], (char *)obj->stringval, 1);
|
||||
ZVAL_STRING(&fci.params[i], (char *)obj->stringval);
|
||||
break;
|
||||
case XPATH_BOOLEAN:
|
||||
ZVAL_BOOL(args[i], obj->boolval);
|
||||
ZVAL_BOOL(&fci.params[i], obj->boolval);
|
||||
break;
|
||||
case XPATH_NUMBER:
|
||||
ZVAL_DOUBLE(args[i], obj->floatval);
|
||||
ZVAL_DOUBLE(&fci.params[i], obj->floatval);
|
||||
break;
|
||||
case XPATH_NODESET:
|
||||
if (type == 1) {
|
||||
str = (char *)xmlXPathCastToString(obj);
|
||||
ZVAL_STRING(args[i], str, 1);
|
||||
ZVAL_STRING(&fci.params[i], str);
|
||||
xmlFree(str);
|
||||
} else if (type == 2) {
|
||||
int j;
|
||||
array_init(args[i]);
|
||||
array_init(&fci.params[i]);
|
||||
if (obj->nodesetval && obj->nodesetval->nodeNr > 0) {
|
||||
for (j = 0; j < obj->nodesetval->nodeNr; j++) {
|
||||
xmlNodePtr node = obj->nodesetval->nodeTab[j];
|
||||
zval *child;
|
||||
MAKE_STD_ZVAL(child);
|
||||
zval child;
|
||||
/* not sure, if we need this... it's copied from xpath.c */
|
||||
if (node->type == XML_NAMESPACE_DECL) {
|
||||
xmlNsPtr curns;
|
||||
@@ -164,17 +159,16 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs,
|
||||
node->parent = nsparent;
|
||||
node->ns = curns;
|
||||
}
|
||||
child = php_dom_create_object(node, &ret, child, (dom_object *)intern TSRMLS_CC);
|
||||
add_next_index_zval(args[i], child);
|
||||
php_dom_create_object(node, &child, (dom_object *)intern TSRMLS_CC);
|
||||
add_next_index_zval(&fci.params[i], &child);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ZVAL_STRING(args[i], (char *)xmlXPathCastToString(obj), 1);
|
||||
ZVAL_STRING(&fci.params[i], (char *)xmlXPathCastToString(obj));
|
||||
}
|
||||
xmlXPathFreeObject(obj);
|
||||
fci.params[i] = &args[i];
|
||||
}
|
||||
|
||||
fci.size = sizeof(fci);
|
||||
@@ -186,70 +180,59 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs,
|
||||
xmlXPathFreeObject(obj);
|
||||
if (fci.param_count > 0) {
|
||||
for (i = 0; i < nargs - 1; i++) {
|
||||
zval_ptr_dtor(&args[i]);
|
||||
zval_ptr_dtor(&fci.params[i]);
|
||||
}
|
||||
efree(args);
|
||||
efree(fci.params);
|
||||
}
|
||||
return;
|
||||
}
|
||||
INIT_PZVAL(&handler);
|
||||
ZVAL_STRING(&handler, obj->stringval, 1);
|
||||
ZVAL_STRING(&fci.function_name, obj->stringval);
|
||||
xmlXPathFreeObject(obj);
|
||||
|
||||
fci.function_name = &handler;
|
||||
fci.symbol_table = NULL;
|
||||
fci.object_ptr = NULL;
|
||||
fci.retval_ptr_ptr = &retval;
|
||||
fci.object = NULL;
|
||||
fci.retval = &retval;
|
||||
fci.no_separation = 0;
|
||||
|
||||
if (!zend_make_callable(&handler, &callable TSRMLS_CC)) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", callable);
|
||||
if (!zend_make_callable(&fci.function_name, &callable TSRMLS_CC)) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", callable->val);
|
||||
|
||||
} else if ( intern->registerPhpFunctions == 2 && zend_hash_exists(intern->registered_phpfunctions, callable, strlen(callable) + 1) == 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not allowed to call handler '%s()'.", callable);
|
||||
} else if (intern->registerPhpFunctions == 2 && zend_hash_exists(intern->registered_phpfunctions, callable) == 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not allowed to call handler '%s()'.", callable->val);
|
||||
/* Push an empty string, so that we at least have an xslt result... */
|
||||
valuePush(ctxt, xmlXPathNewString((xmlChar *)""));
|
||||
} else {
|
||||
result = zend_call_function(&fci, NULL TSRMLS_CC);
|
||||
if (result == FAILURE) {
|
||||
if (Z_TYPE(handler) == IS_STRING) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", Z_STRVAL_P(&handler));
|
||||
}
|
||||
/* retval is == NULL, when an exception occurred, don't report anything, because PHP itself will handle that */
|
||||
} else if (retval == NULL) {
|
||||
} else {
|
||||
if (retval->type == IS_OBJECT && instanceof_function( Z_OBJCE_P(retval), dom_node_class_entry TSRMLS_CC)) {
|
||||
if (result == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
|
||||
if (Z_TYPE(retval) == IS_OBJECT && instanceof_function(Z_OBJCE(retval), dom_node_class_entry TSRMLS_CC)) {
|
||||
xmlNode *nodep;
|
||||
dom_object *obj;
|
||||
if (intern->node_list == NULL) {
|
||||
ALLOC_HASHTABLE(intern->node_list);
|
||||
zend_hash_init(intern->node_list, 0, NULL, ZVAL_PTR_DTOR, 0);
|
||||
}
|
||||
zval_add_ref(&retval);
|
||||
zend_hash_next_index_insert(intern->node_list, &retval, sizeof(zval *), NULL);
|
||||
obj = (dom_object *)zend_object_store_get_object(retval TSRMLS_CC);
|
||||
GC_REFCOUNT(&retval)++;
|
||||
zend_hash_next_index_insert(intern->node_list, &retval);
|
||||
obj = Z_DOMOBJ_P(&retval);
|
||||
nodep = dom_object_get_node(obj);
|
||||
valuePush(ctxt, xmlXPathNewNodeSet(nodep));
|
||||
} else if (retval->type == IS_BOOL) {
|
||||
valuePush(ctxt, xmlXPathNewBoolean(retval->value.lval));
|
||||
} else if (retval->type == IS_OBJECT) {
|
||||
} else if (Z_TYPE(retval) == IS_BOOL) {
|
||||
valuePush(ctxt, xmlXPathNewBoolean(Z_BVAL(retval)));
|
||||
} else if (Z_TYPE(retval) == IS_OBJECT) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "A PHP Object cannot be converted to a XPath-string");
|
||||
valuePush(ctxt, xmlXPathNewString((xmlChar *)""));
|
||||
} else {
|
||||
convert_to_string_ex(&retval);
|
||||
valuePush(ctxt, xmlXPathNewString( Z_STRVAL_P(retval)));
|
||||
valuePush(ctxt, xmlXPathNewString( Z_STRVAL(retval)));
|
||||
}
|
||||
zval_ptr_dtor(&retval);
|
||||
}
|
||||
}
|
||||
efree(callable);
|
||||
zval_dtor(&handler);
|
||||
STR_FREE(callable);
|
||||
if (fci.param_count > 0) {
|
||||
for (i = 0; i < nargs - 1; i++) {
|
||||
zval_ptr_dtor(&args[i]);
|
||||
zval_ptr_dtor(&fci.params[i]);
|
||||
}
|
||||
efree(args);
|
||||
efree(fci.params);
|
||||
}
|
||||
}
|
||||
@@ -292,7 +275,7 @@ PHP_METHOD(domxpath, __construct)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
if (intern != NULL) {
|
||||
oldctx = (xmlXPathContextPtr)intern->ptr;
|
||||
if (oldctx != NULL) {
|
||||
@@ -316,30 +299,16 @@ PHP_METHOD(domxpath, __construct)
|
||||
/* }}} end DOMXPath::__construct */
|
||||
|
||||
/* {{{ document DOMDocument*/
|
||||
int dom_xpath_document_read(dom_object *obj, zval **retval TSRMLS_DC)
|
||||
int dom_xpath_document_read(dom_object *obj, zval *retval TSRMLS_DC)
|
||||
{
|
||||
xmlDoc *docp = NULL;
|
||||
xmlXPathContextPtr ctx;
|
||||
int ret;
|
||||
zval *tmp;
|
||||
|
||||
ctx = (xmlXPathContextPtr) obj->ptr;
|
||||
xmlXPathContextPtr ctx = (xmlXPathContextPtr) obj->ptr;
|
||||
|
||||
if (ctx) {
|
||||
docp = (xmlDocPtr) ctx->doc;
|
||||
}
|
||||
|
||||
ALLOC_ZVAL(*retval);
|
||||
tmp = *retval;
|
||||
|
||||
if (NULL == (*retval = php_dom_create_object((xmlNodePtr) docp, &ret, *retval, obj TSRMLS_CC))) {
|
||||
FREE_ZVAL(tmp);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
|
||||
return FAILURE;
|
||||
}
|
||||
if (tmp != *retval) {
|
||||
FREE_ZVAL(tmp);
|
||||
}
|
||||
php_dom_create_object((xmlNodePtr) docp, retval, obj TSRMLS_CC);
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -357,7 +326,7 @@ PHP_FUNCTION(dom_xpath_register_ns)
|
||||
return;
|
||||
}
|
||||
|
||||
intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
|
||||
ctxp = (xmlXPathContextPtr) intern->ptr;
|
||||
if (ctxp == NULL) {
|
||||
@@ -385,11 +354,11 @@ static void dom_xpath_iter(zval *baseobj, dom_object *intern) /* {{{ */
|
||||
|
||||
static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
|
||||
{
|
||||
zval *id, *retval, *context = NULL;
|
||||
zval *id, retval, *context = NULL;
|
||||
xmlXPathContextPtr ctxp;
|
||||
xmlNodePtr nodep = NULL;
|
||||
xmlXPathObjectPtr xpathobjp;
|
||||
int expr_len, ret, nsnbr = 0, xpath_type;
|
||||
int expr_len, nsnbr = 0, xpath_type;
|
||||
dom_xpath_object *intern;
|
||||
dom_object *nodeobj;
|
||||
char *expr;
|
||||
@@ -401,7 +370,7 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
|
||||
return;
|
||||
}
|
||||
|
||||
intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
|
||||
ctxp = (xmlXPathContextPtr) intern->ptr;
|
||||
if (ctxp == NULL) {
|
||||
@@ -470,16 +439,13 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
|
||||
int i;
|
||||
xmlNodeSetPtr nodesetp;
|
||||
|
||||
MAKE_STD_ZVAL(retval);
|
||||
array_init(retval);
|
||||
array_init(&retval);
|
||||
|
||||
if (xpathobjp->type == XPATH_NODESET && NULL != (nodesetp = xpathobjp->nodesetval)) {
|
||||
|
||||
for (i = 0; i < nodesetp->nodeNr; i++) {
|
||||
xmlNodePtr node = nodesetp->nodeTab[i];
|
||||
zval *child;
|
||||
|
||||
MAKE_STD_ZVAL(child);
|
||||
zval child;
|
||||
|
||||
if (node->type == XML_NAMESPACE_DECL) {
|
||||
xmlNsPtr curns;
|
||||
@@ -499,13 +465,13 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
|
||||
node->parent = nsparent;
|
||||
node->ns = curns;
|
||||
}
|
||||
child = php_dom_create_object(node, &ret, child, (dom_object *)intern TSRMLS_CC);
|
||||
add_next_index_zval(retval, child);
|
||||
php_dom_create_object(node, &child, (dom_object *)intern TSRMLS_CC);
|
||||
add_next_index_zval(&retval, &child);
|
||||
}
|
||||
}
|
||||
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
|
||||
nodeobj = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
|
||||
dom_xpath_iter(retval, nodeobj);
|
||||
nodeobj = Z_DOMOBJ_P(return_value);
|
||||
dom_xpath_iter(&retval, nodeobj);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -518,7 +484,7 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
|
||||
break;
|
||||
|
||||
case XPATH_STRING:
|
||||
RETVAL_STRING(xpathobjp->stringval, 1);
|
||||
RETVAL_STRING(xpathobjp->stringval);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -549,39 +515,32 @@ PHP_FUNCTION(dom_xpath_register_php_functions)
|
||||
{
|
||||
zval *id;
|
||||
dom_xpath_object *intern;
|
||||
zval *array_value, **entry, *new_string;
|
||||
int name_len = 0;
|
||||
char *name;
|
||||
zval *array_value, *entry, new_string;
|
||||
zend_string *name;
|
||||
|
||||
DOM_GET_THIS(id);
|
||||
|
||||
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "a", &array_value) == SUCCESS) {
|
||||
intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value));
|
||||
|
||||
while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) {
|
||||
SEPARATE_ZVAL(entry);
|
||||
convert_to_string_ex(entry);
|
||||
|
||||
MAKE_STD_ZVAL(new_string);
|
||||
ZVAL_LONG(new_string,1);
|
||||
|
||||
zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL);
|
||||
while ((entry = zend_hash_get_current_data(Z_ARRVAL_P(array_value)))) {
|
||||
zend_string *str = zval_get_string(entry TSRMLS_CC);
|
||||
ZVAL_LONG(&new_string,1);
|
||||
zend_hash_update(intern->registered_phpfunctions, str, &new_string);
|
||||
zend_hash_move_forward(Z_ARRVAL_P(array_value));
|
||||
STR_RELEASE(str);
|
||||
}
|
||||
intern->registerPhpFunctions = 2;
|
||||
RETURN_TRUE;
|
||||
|
||||
} else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == SUCCESS) {
|
||||
intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
} else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "S", &name) == SUCCESS) {
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
|
||||
MAKE_STD_ZVAL(new_string);
|
||||
ZVAL_LONG(new_string,1);
|
||||
zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL);
|
||||
ZVAL_LONG(&new_string, 1);
|
||||
zend_hash_update(intern->registered_phpfunctions, name, &new_string);
|
||||
intern->registerPhpFunctions = 2;
|
||||
|
||||
} else {
|
||||
intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC);
|
||||
intern = Z_DOMOBJ_P(id);
|
||||
intern->registerPhpFunctions = 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user