Commit acutal code only, will do ws on another pass.

This commit is contained in:
Joey Smith 2001-08-09 12:35:09 +00:00
parent 00418457d3
commit f8d7307270

View file

@ -102,13 +102,13 @@ static zend_function_entry domxml_functions[] = {
PHP_FE(domxml_new_xmldoc, NULL)
PHP_FALIAS(new_xmldoc, domxml_new_xmldoc, NULL)
#if defined(LIBXML_XPATH_ENABLED)
/* PHP_FE(xpath_new_context, NULL)
PHP_FE(xpath_new_context, NULL)
PHP_FE(xpath_eval, NULL)
PHP_FE(xpath_eval_expression, NULL) */
PHP_FE(xpath_eval_expression, NULL)
#endif
#if defined(LIBXML_XPTR_ENABLED)
/* PHP_FE(xptr_new_context, NULL)
PHP_FE(xptr_eval, NULL) */
PHP_FE(xptr_new_context, NULL)
PHP_FE(xptr_eval, NULL)
#endif
{NULL, NULL, NULL}
};
@ -2477,21 +2477,50 @@ PHP_FUNCTION(xptr_new_context)
}
/* }}} */
/* {{{ */
static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr)
{
zval *id, *str, *rv;
zval *id, *str, *rv, *contextnode;
xmlXPathContextPtr ctxp;
xmlXPathObjectPtr xpathobjp;
xmlNode *contextnodep;
int ret;
if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &str) == FAILURE) {
WRONG_PARAM_COUNT;
}
contextnode = NULL;
contextnodep = NULL;
id = getThis();
if (! id) {
switch(ZEND_NUM_ARGS()) {
case 2:
if ((getParameters(ht, 2, &id, &str)) == FAILURE)
{
WRONG_PARAM_COUNT;
}
break;
case 3:
if ((getParameters(ht, 3, &id, &str, &contextnode)) == FAILURE)
{
WRONG_PARAM_COUNT;
}
break;
default:
WRONG_PARAM_COUNT;
}
}
ctxp = php_xpath_get_context(id, le_xpathctxp, 0 TSRMLS_CC);
convert_to_string(str);
if (contextnode) {
contextnodep = php_dom_get_object(contextnode, le_domxmlnodep, 0);
}
ctxp->node = contextnodep;
#if defined(LIBXML_XPTR_ENABLED)
if(mode == PHP_XPTR) {
xpathobjp = xmlXPtrEval(BAD_CAST str->value.str.val, ctxp);
@ -2505,6 +2534,7 @@ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr)
}
#endif
ctxp->node = NULL;
if (!xpathobjp) {
RETURN_FALSE;
}