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: 55 71 77.5 %
Date: 2019-05-06 Functions: 8 8 100.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10

Generated at Mon, 06 May 2019 17:58:13 +0000 (998 days ago)

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