Return to entityreference.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / dom |
1.1 ! misho 1: /* ! 2: +----------------------------------------------------------------------+ ! 3: | PHP Version 5 | ! 4: +----------------------------------------------------------------------+ ! 5: | Copyright (c) 1997-2012 The PHP Group | ! 6: +----------------------------------------------------------------------+ ! 7: | This source file is subject to version 3.01 of the PHP license, | ! 8: | that is bundled with this package in the file LICENSE, and is | ! 9: | available through the world-wide-web at the following url: | ! 10: | http://www.php.net/license/3_01.txt | ! 11: | If you did not receive a copy of the PHP license and are unable to | ! 12: | obtain it through the world-wide-web, please send a note to | ! 13: | license@php.net so we can mail you a copy immediately. | ! 14: +----------------------------------------------------------------------+ ! 15: | Authors: Christian Stocker <chregu@php.net> | ! 16: | Rob Richards <rrichards@php.net> | ! 17: +----------------------------------------------------------------------+ ! 18: */ ! 19: ! 20: /* $Id: entityreference.c 321634 2012-01-01 13:15:04Z felipe $ */ ! 21: ! 22: #ifdef HAVE_CONFIG_H ! 23: #include "config.h" ! 24: #endif ! 25: ! 26: #include "php.h" ! 27: #if HAVE_LIBXML && HAVE_DOM ! 28: #include "php_dom.h" ! 29: ! 30: /* {{{ arginfo */ ! 31: ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_entityreference_construct, 0, 0, 1) ! 32: ZEND_ARG_INFO(0, name) ! 33: ZEND_END_ARG_INFO(); ! 34: /* }}} */ ! 35: ! 36: /* ! 37: * class DOMEntityReference extends DOMNode ! 38: * ! 39: * URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-11C98490 ! 40: * Since: ! 41: */ ! 42: ! 43: const zend_function_entry php_dom_entityreference_class_functions[] = { ! 44: PHP_ME(domentityreference, __construct, arginfo_dom_entityreference_construct, ZEND_ACC_PUBLIC) ! 45: PHP_FE_END ! 46: }; ! 47: ! 48: /* {{{ proto void DOMEntityReference::__construct(string name); */ ! 49: PHP_METHOD(domentityreference, __construct) ! 50: { ! 51: zval *id; ! 52: xmlNode *node; ! 53: xmlNodePtr oldnode = NULL; ! 54: dom_object *intern; ! 55: char *name; ! 56: int name_len, name_valid; ! 57: zend_error_handling error_handling; ! 58: ! 59: zend_replace_error_handling(EH_THROW, dom_domexception_class_entry, &error_handling TSRMLS_CC); ! 60: if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_entityreference_class_entry, &name, &name_len) == FAILURE) { ! 61: zend_restore_error_handling(&error_handling TSRMLS_CC); ! 62: return; ! 63: } ! 64: ! 65: zend_restore_error_handling(&error_handling TSRMLS_CC); ! 66: ! 67: name_valid = xmlValidateName((xmlChar *) name, 0); ! 68: if (name_valid != 0) { ! 69: php_dom_throw_error(INVALID_CHARACTER_ERR, 1 TSRMLS_CC); ! 70: RETURN_FALSE; ! 71: } ! 72: ! 73: node = xmlNewReference(NULL, name); ! 74: ! 75: if (!node) { ! 76: php_dom_throw_error(INVALID_STATE_ERR, 1 TSRMLS_CC); ! 77: RETURN_FALSE; ! 78: } ! 79: ! 80: intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); ! 81: if (intern != NULL) { ! 82: oldnode = dom_object_get_node(intern); ! 83: if (oldnode != NULL) { ! 84: php_libxml_node_free_resource(oldnode TSRMLS_CC); ! 85: } ! 86: php_libxml_increment_node_ptr((php_libxml_node_object *)intern, node, (void *)intern TSRMLS_CC); ! 87: } ! 88: } ! 89: /* }}} end DOMEntityReference::__construct */ ! 90: ! 91: #endif ! 92: ! 93: /* ! 94: * Local variables: ! 95: * tab-width: 4 ! 96: * c-basic-offset: 4 ! 97: * End: ! 98: * vim600: noet sw=4 ts=4 fdm=marker ! 99: * vim<600: noet sw=4 ts=4 ! 100: */