PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LCOV - code coverage report
Current view: top level - ext/dom - attr.c (source / functions) Hit Total Coverage
Test: PHP Code Coverage Lines: 58 74 78.4 %
Date: 2014-09-27 Functions: 8 8 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :    +----------------------------------------------------------------------+
       3             :    | PHP Version 7                                                        |
       4             :    +----------------------------------------------------------------------+
       5             :    | Copyright (c) 1997-2014 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$ */
      21             : 
      22             : #ifdef HAVE_CONFIG_H
      23             : #include "config.h"
      24             : #endif
      25             : 
      26             : #include "php.h"
      27             : 
      28             : #if HAVE_LIBXML && HAVE_DOM
      29             : 
      30             : #include "php_dom.h"
      31             : 
      32             : /* {{{ arginfo */
      33             : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_attr_is_id, 0, 0, 0)
      34             : ZEND_END_ARG_INFO();
      35             : 
      36             : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_attr_construct, 0, 0, 1)
      37             :         ZEND_ARG_INFO(0, name)
      38             :         ZEND_ARG_INFO(0, value)
      39             : ZEND_END_ARG_INFO();
      40             : /* }}} */
      41             : 
      42             : /*
      43             : * class DOMAttr extends DOMNode 
      44             : *
      45             : * URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-637646024
      46             : * Since: 
      47             : */
      48             : 
      49             : const zend_function_entry php_dom_attr_class_functions[] = {
      50             :         PHP_FALIAS(isId, dom_attr_is_id, arginfo_dom_attr_is_id)
      51             :         PHP_ME(domattr, __construct, arginfo_dom_attr_construct, ZEND_ACC_PUBLIC)
      52             :         PHP_FE_END
      53             : };
      54             : 
      55             : /* {{{ proto void DOMAttr::__construct(string name, [string value]); */
      56           6 : PHP_METHOD(domattr, __construct)
      57             : {
      58             :         zval *id;
      59           6 :         xmlAttrPtr nodep = NULL;
      60           6 :         xmlNodePtr oldnode = NULL;
      61             :         dom_object *intern;
      62           6 :         char *name, *value = NULL;
      63             :         size_t name_len, value_len, name_valid;
      64             :         zend_error_handling error_handling;
      65             : 
      66           6 :         zend_replace_error_handling(EH_THROW, dom_domexception_class_entry, &error_handling TSRMLS_CC);
      67           6 :         if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|s", &id, dom_attr_class_entry, &name, &name_len, &value, &value_len) == FAILURE) {
      68           1 :                 zend_restore_error_handling(&error_handling TSRMLS_CC);
      69           1 :                 return;
      70             :         }
      71             : 
      72           5 :         zend_restore_error_handling(&error_handling TSRMLS_CC);
      73           5 :         intern = Z_DOMOBJ_P(id);
      74             : 
      75           5 :         name_valid = xmlValidateName((xmlChar *) name, 0);
      76           5 :         if (name_valid != 0) {
      77           1 :                 php_dom_throw_error(INVALID_CHARACTER_ERR, 1 TSRMLS_CC);
      78           1 :                 RETURN_FALSE;
      79             :         }
      80             : 
      81           4 :         nodep = xmlNewProp(NULL, (xmlChar *) name, (xmlChar *) value);
      82             : 
      83           4 :         if (!nodep) {
      84           0 :                 php_dom_throw_error(INVALID_STATE_ERR, 1 TSRMLS_CC);
      85           0 :                 RETURN_FALSE;
      86             :         }
      87             : 
      88           4 :         oldnode = dom_object_get_node(intern);
      89           4 :         if (oldnode != NULL) {
      90           0 :                 php_libxml_node_free_resource(oldnode  TSRMLS_CC);
      91             :         }
      92           4 :         php_libxml_increment_node_ptr((php_libxml_node_object *)intern, (xmlNodePtr)nodep, (void *)intern TSRMLS_CC);
      93             : }
      94             : 
      95             : /* }}} end DOMAttr::__construct */
      96             : 
      97             : /* {{{ name     string  
      98             : readonly=yes 
      99             : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-1112119403
     100             : Since: 
     101             : */
     102           2 : int dom_attr_name_read(dom_object *obj, zval *retval TSRMLS_DC)
     103             : {
     104             :         xmlAttrPtr attrp;
     105             : 
     106           2 :         attrp = (xmlAttrPtr) dom_object_get_node(obj);
     107             : 
     108           2 :         if (attrp == NULL) {
     109           0 :                 php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
     110           0 :                 return FAILURE;
     111             :         }
     112             : 
     113           4 :         ZVAL_STRING(retval, (char *) attrp->name);
     114             : 
     115           2 :         return SUCCESS;
     116             : }
     117             : 
     118             : /* }}} */
     119             : 
     120             : /* {{{ specified        boolean 
     121             : readonly=yes 
     122             : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-862529273
     123             : Since: 
     124             : */
     125           1 : int dom_attr_specified_read(dom_object *obj, zval *retval TSRMLS_DC)
     126             : {
     127             :         /* TODO */
     128           1 :         ZVAL_TRUE(retval);
     129           1 :         return SUCCESS;
     130             : }
     131             : 
     132             : /* }}} */
     133             : 
     134             : /* {{{ value    string  
     135             : readonly=no 
     136             : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-221662474
     137             : Since: 
     138             : */
     139           7 : int dom_attr_value_read(dom_object *obj, zval *retval TSRMLS_DC)
     140             : {
     141           7 :         xmlAttrPtr attrp = (xmlAttrPtr) dom_object_get_node(obj);
     142             :         xmlChar *content;
     143             : 
     144           7 :         if (attrp == NULL) {
     145           0 :                 php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
     146           0 :                 return FAILURE;
     147             :         }
     148             : 
     149           7 :         if ((content = xmlNodeGetContent((xmlNodePtr) attrp)) != NULL) {
     150          14 :                 ZVAL_STRING(retval, (char *) content);
     151           7 :                 xmlFree(content);
     152             :         } else {
     153           0 :                 ZVAL_EMPTY_STRING(retval);
     154             :         }
     155             : 
     156           7 :         return SUCCESS;
     157             : 
     158             : }
     159             : 
     160           5 : int dom_attr_value_write(dom_object *obj, zval *newval TSRMLS_DC)
     161             : {
     162             :         zend_string *str;
     163           5 :         xmlAttrPtr attrp = (xmlAttrPtr) dom_object_get_node(obj);
     164             : 
     165           5 :         if (attrp == NULL) {
     166           0 :                 php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
     167           0 :                 return FAILURE;
     168             :         }
     169             : 
     170           5 :         if (attrp->children) {
     171           4 :                 node_list_unlink(attrp->children TSRMLS_CC);
     172             :         }
     173             : 
     174           5 :         str = zval_get_string(newval);
     175             : 
     176           5 :         xmlNodeSetContentLen((xmlNodePtr) attrp, (xmlChar *) str->val, str->len + 1);
     177             : 
     178             :         zend_string_release(str);
     179           5 :         return SUCCESS;
     180             : }
     181             : 
     182             : /* }}} */
     183             : 
     184             : /* {{{ ownerElement     DOMElement      
     185             : readonly=yes 
     186             : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-ownerElement
     187             : Since: DOM Level 2
     188             : */
     189           2 : int dom_attr_owner_element_read(dom_object *obj, zval *retval TSRMLS_DC)
     190             : {
     191             :         xmlNodePtr nodep, nodeparent;
     192             : 
     193           2 :         nodep = dom_object_get_node(obj);
     194             : 
     195           2 :         if (nodep == NULL) {
     196           0 :                 php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC);
     197           0 :                 return FAILURE;
     198             :         }
     199             : 
     200           2 :         nodeparent = nodep->parent;
     201           2 :         if (!nodeparent) {
     202           0 :                 ZVAL_NULL(retval);
     203           0 :                 return SUCCESS;
     204             :         }
     205             : 
     206           2 :         php_dom_create_object(nodeparent, retval, obj TSRMLS_CC);
     207           2 :         return SUCCESS;
     208             : 
     209             : }
     210             : 
     211             : /* }}} */
     212             : 
     213             : /* {{{ schemaTypeInfo   DOMTypeInfo     
     214             : readonly=yes 
     215             : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-schemaTypeInfo
     216             : Since: DOM Level 3
     217             : */
     218           1 : int dom_attr_schema_type_info_read(dom_object *obj, zval *retval TSRMLS_DC)
     219             : {
     220           1 :         php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not yet implemented");
     221           1 :         ZVAL_NULL(retval);
     222           1 :         return SUCCESS;
     223             : }
     224             : 
     225             : /* }}} */
     226             : 
     227             : /* {{{ proto boolean dom_attr_is_id();
     228             : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId
     229             : Since: DOM Level 3
     230             : */
     231           1 : PHP_FUNCTION(dom_attr_is_id)
     232             : {
     233             :         zval *id;
     234             :         dom_object *intern;
     235             :         xmlAttrPtr attrp;
     236             : 
     237           1 :         if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &id, dom_attr_class_entry) == FAILURE) {
     238           0 :                 return;
     239             :         }
     240             : 
     241           1 :         DOM_GET_OBJ(attrp, id, xmlAttrPtr, intern);
     242             : 
     243           1 :         if (attrp->atype == XML_ATTRIBUTE_ID) {
     244           0 :                 RETURN_TRUE;
     245             :         } else {
     246           1 :                 RETURN_FALSE;
     247             :         }
     248             : }
     249             : /* }}} end dom_attr_is_id */
     250             : 
     251             : #endif
     252             : 
     253             : /*
     254             :  * Local variables:
     255             :  * tab-width: 4
     256             :  * c-basic-offset: 4
     257             :  * End:
     258             :  * vim600: noet sw=4 ts=4 fdm=marker
     259             :  * vim<600: noet sw=4 ts=4
     260             :  */

Generated by: LCOV version 1.10

Generated at Sat, 27 Sep 2014 16:43:07 +0000 (3 days ago)

Copyright © 2005-2014 The PHP Group
All rights reserved.