comment.c 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. +----------------------------------------------------------------------+
  3. | PHP Version 5 |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) 1997-2016 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. /* $Id$ */
  20. #ifdef HAVE_CONFIG_H
  21. #include "config.h"
  22. #endif
  23. #include "php.h"
  24. #if HAVE_LIBXML && HAVE_DOM
  25. #include "php_dom.h"
  26. /* {{{ arginfo */
  27. ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_comment_construct, 0, 0, 0)
  28. ZEND_ARG_INFO(0, value)
  29. ZEND_END_ARG_INFO();
  30. /* }}} */
  31. /*
  32. * class DOMComment extends DOMCharacterData
  33. *
  34. * URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-1728279322
  35. * Since:
  36. */
  37. const zend_function_entry php_dom_comment_class_functions[] = {
  38. PHP_ME(domcomment, __construct, arginfo_dom_comment_construct, ZEND_ACC_PUBLIC)
  39. {NULL, NULL, NULL}
  40. };
  41. /* {{{ proto void DOMComment::__construct([string value]); */
  42. PHP_METHOD(domcomment, __construct)
  43. {
  44. zval *id;
  45. xmlNodePtr nodep = NULL, oldnode = NULL;
  46. dom_object *intern;
  47. char *value = NULL;
  48. int value_len;
  49. zend_error_handling error_handling;
  50. zend_replace_error_handling(EH_THROW, dom_domexception_class_entry, &error_handling TSRMLS_CC);
  51. if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|s", &id, dom_comment_class_entry, &value, &value_len) == FAILURE) {
  52. zend_restore_error_handling(&error_handling TSRMLS_CC);
  53. return;
  54. }
  55. zend_restore_error_handling(&error_handling TSRMLS_CC);
  56. nodep = xmlNewComment((xmlChar *) value);
  57. if (!nodep) {
  58. php_dom_throw_error(INVALID_STATE_ERR, 1 TSRMLS_CC);
  59. RETURN_FALSE;
  60. }
  61. intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
  62. if (intern != NULL) {
  63. oldnode = dom_object_get_node(intern);
  64. if (oldnode != NULL) {
  65. php_libxml_node_free_resource(oldnode TSRMLS_CC);
  66. }
  67. php_libxml_increment_node_ptr((php_libxml_node_object *)intern, (xmlNodePtr)nodep, (void *)intern TSRMLS_CC);
  68. }
  69. }
  70. /* }}} end DOMComment::__construct */
  71. #endif
  72. /*
  73. * Local variables:
  74. * tab-width: 4
  75. * c-basic-offset: 4
  76. * End:
  77. * vim600: noet sw=4 ts=4 fdm=marker
  78. * vim<600: noet sw=4 ts=4
  79. */