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

LTP GCOV extension - code coverage report
Current view: directory - dom - namednodemap.c
Test: PHP Code Coverage
Date: 2009-11-19 Instrumented lines: 100
Code covered: 50.0 % Executed lines: 50
Legend: not executed executed

       1                 : /*
       2                 :    +----------------------------------------------------------------------+
       3                 :    | PHP Version 5                                                        |
       4                 :    +----------------------------------------------------------------------+
       5                 :    | Copyright (c) 1997-2009 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: namednodemap.c 272374 2008-12-31 11:17:49Z sebastian $ */
      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                 : 
      31                 : /* {{{ arginfo */
      32                 : static
      33                 : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_get_named_item, 0, 0, 1)
      34                 :         ZEND_ARG_INFO(0, name)
      35                 : ZEND_END_ARG_INFO();
      36                 : 
      37                 : static
      38                 : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_set_named_item, 0, 0, 1)
      39                 :         ZEND_ARG_OBJ_INFO(0, arg, DOMNode, 0)
      40                 : ZEND_END_ARG_INFO();
      41                 : 
      42                 : static
      43                 : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_remove_named_item, 0, 0, 0)
      44                 :         ZEND_ARG_INFO(0, name)
      45                 : ZEND_END_ARG_INFO();
      46                 : 
      47                 : static
      48                 : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_item, 0, 0, 0)
      49                 :         ZEND_ARG_INFO(0, index)
      50                 : ZEND_END_ARG_INFO();
      51                 : 
      52                 : static
      53                 : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_get_named_item_ns, 0, 0, 0)
      54                 :         ZEND_ARG_INFO(0, namespaceURI)
      55                 :         ZEND_ARG_INFO(0, localName)
      56                 : ZEND_END_ARG_INFO();
      57                 : 
      58                 : static
      59                 : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_set_named_item_ns, 0, 0, 0)
      60                 :         ZEND_ARG_OBJ_INFO(0, arg, DOMNode, 0)
      61                 : ZEND_END_ARG_INFO();
      62                 : 
      63                 : static
      64                 : ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_namednodemap_remove_named_item_ns, 0, 0, 0)
      65                 :         ZEND_ARG_INFO(0, namespaceURI)
      66                 :         ZEND_ARG_INFO(0, localName)
      67                 : ZEND_END_ARG_INFO();
      68                 : /* }}} */
      69                 : 
      70                 : /*
      71                 : * class DOMNamedNodeMap 
      72                 : *
      73                 : * URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1780488922
      74                 : * Since: 
      75                 : */
      76                 : 
      77                 : zend_function_entry php_dom_namednodemap_class_functions[] = {
      78                 :         PHP_FALIAS(getNamedItem, dom_namednodemap_get_named_item, arginfo_dom_namednodemap_get_named_item)
      79                 :         PHP_FALIAS(setNamedItem, dom_namednodemap_set_named_item, arginfo_dom_namednodemap_set_named_item)
      80                 :         PHP_FALIAS(removeNamedItem, dom_namednodemap_remove_named_item, arginfo_dom_namednodemap_remove_named_item)
      81                 :         PHP_FALIAS(item, dom_namednodemap_item, arginfo_dom_namednodemap_item)
      82                 :         PHP_FALIAS(getNamedItemNS, dom_namednodemap_get_named_item_ns, arginfo_dom_namednodemap_get_named_item_ns)
      83                 :         PHP_FALIAS(setNamedItemNS, dom_namednodemap_set_named_item_ns, arginfo_dom_namednodemap_set_named_item_ns)
      84                 :         PHP_FALIAS(removeNamedItemNS, dom_namednodemap_remove_named_item_ns, arginfo_dom_namednodemap_remove_named_item_ns)
      85                 :         {NULL, NULL, NULL}
      86                 : };
      87                 : 
      88                 : /* {{{ length   int     
      89                 : readonly=yes 
      90                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D0FB19E
      91                 : Since: 
      92                 : */
      93                 : int dom_namednodemap_length_read(dom_object *obj, zval **retval TSRMLS_DC)
      94               2 : {
      95                 :         dom_nnodemap_object *objmap;
      96                 :         xmlAttrPtr curnode;
      97                 :         xmlNodePtr nodep;
      98               2 :         int count = 0;
      99                 : 
     100               2 :         objmap = (dom_nnodemap_object *)obj->ptr;
     101                 : 
     102               2 :         if (objmap != NULL) {
     103               4 :                 if ((objmap->nodetype == XML_NOTATION_NODE) || 
     104                 :                         objmap->nodetype == XML_ENTITY_NODE) {
     105               2 :                         if (objmap->ht) {
     106               2 :                                 count = xmlHashSize(objmap->ht);
     107                 :                         }
     108                 :                 } else {
     109               0 :                         nodep = dom_object_get_node(objmap->baseobj);
     110               0 :                         if (nodep) {
     111               0 :                                 curnode = nodep->properties;
     112               0 :                                 if (curnode) {
     113               0 :                                         count++;
     114               0 :                                         while (curnode->next != NULL) {
     115               0 :                                                 count++;
     116               0 :                                                 curnode = curnode->next;
     117                 :                                         }
     118                 :                                 }
     119                 :                         }
     120                 :                 }
     121                 :         }
     122                 : 
     123               2 :         MAKE_STD_ZVAL(*retval);
     124               2 :         ZVAL_LONG(*retval, count);
     125               2 :         return SUCCESS;
     126                 : }
     127                 : 
     128                 : /* }}} */
     129                 : 
     130                 : 
     131                 : 
     132                 : 
     133                 : /* {{{ proto DOMNode dom_namednodemap_get_named_item(string name);
     134                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549
     135                 : Since: 
     136                 : */
     137                 : PHP_FUNCTION(dom_namednodemap_get_named_item)
     138               2 : {
     139               2 :         zval *id, *rv = NULL;
     140               2 :         int ret, namedlen=0;
     141                 :         dom_object *intern;
     142               2 :         xmlNodePtr itemnode = NULL;
     143                 :         char *named;
     144                 : 
     145                 :         dom_nnodemap_object *objmap;
     146                 :         xmlNodePtr nodep;
     147               2 :         xmlNotation *notep = NULL;
     148                 : 
     149               2 :         if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_namednodemap_class_entry, &named, &namedlen) == FAILURE) {
     150               0 :                 return;
     151                 :         }
     152                 : 
     153               2 :         intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
     154                 : 
     155               2 :         objmap = (dom_nnodemap_object *)intern->ptr;
     156                 : 
     157               2 :         if (objmap != NULL) {
     158               4 :                 if ((objmap->nodetype == XML_NOTATION_NODE) || 
     159                 :                         objmap->nodetype == XML_ENTITY_NODE) {
     160               2 :                         if (objmap->ht) {
     161               2 :                                 if (objmap->nodetype == XML_ENTITY_NODE) {
     162               1 :                                         itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, named);
     163                 :                                 } else {
     164               1 :                                         notep = (xmlNotation *)xmlHashLookup(objmap->ht, named);
     165               1 :                                         if (notep) {
     166               0 :                                                 itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
     167                 :                                         }
     168                 :                                 }
     169                 :                         }
     170                 :                 } else {
     171               0 :                         nodep = dom_object_get_node(objmap->baseobj);
     172               0 :                         if (nodep) {
     173               0 :                                 itemnode = (xmlNodePtr)xmlHasProp(nodep, named);
     174                 :                         }
     175                 :                 }
     176                 :         }
     177                 : 
     178               2 :         if (itemnode) {
     179               0 :                 DOM_RET_OBJ(rv, itemnode, &ret, objmap->baseobj);
     180               0 :                 return;
     181                 :         } else {
     182               2 :                 RETVAL_NULL();
     183                 :         }
     184                 : }
     185                 : /* }}} end dom_namednodemap_get_named_item */
     186                 : 
     187                 : 
     188                 : /* {{{ proto DOMNode dom_namednodemap_set_named_item(DOMNode arg);
     189                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788
     190                 : Since: 
     191                 : */
     192                 : PHP_FUNCTION(dom_namednodemap_set_named_item)
     193               0 : {
     194               0 :  DOM_NOT_IMPLEMENTED();
     195                 : }
     196                 : /* }}} end dom_namednodemap_set_named_item */
     197                 : 
     198                 : 
     199                 : /* {{{ proto DOMNode dom_namednodemap_remove_named_item(string name);
     200                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193
     201                 : Since: 
     202                 : */
     203                 : PHP_FUNCTION(dom_namednodemap_remove_named_item)
     204               0 : {
     205               0 :  DOM_NOT_IMPLEMENTED();
     206                 : }
     207                 : /* }}} end dom_namednodemap_remove_named_item */
     208                 : 
     209                 : 
     210                 : /* {{{ proto DOMNode dom_namednodemap_item(int index);
     211                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9
     212                 : Since: 
     213                 : */
     214                 : PHP_FUNCTION(dom_namednodemap_item)
     215              10 : {
     216              10 :         zval *id, *rv = NULL;
     217                 :         long index;
     218                 :         int ret;
     219                 :         dom_object *intern;
     220              10 :         xmlNodePtr itemnode = NULL;
     221                 : 
     222                 :         dom_nnodemap_object *objmap;
     223                 :         xmlNodePtr nodep, curnode;
     224                 :         int count;
     225                 : 
     226              10 :         if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &id, dom_namednodemap_class_entry, &index) == FAILURE) {
     227               0 :                 return;
     228                 :         }
     229              10 :         if (index >= 0) {
     230              10 :                 intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
     231                 : 
     232              10 :                 objmap = (dom_nnodemap_object *)intern->ptr;
     233                 : 
     234              10 :                 if (objmap != NULL) {
     235              19 :                         if ((objmap->nodetype == XML_NOTATION_NODE) || 
     236                 :                                 objmap->nodetype == XML_ENTITY_NODE) {
     237               9 :                                 if (objmap->ht) {
     238               9 :                                         if (objmap->nodetype == XML_ENTITY_NODE) {
     239               5 :                                                 itemnode = php_dom_libxml_hash_iter(objmap->ht, index);
     240                 :                                         } else {
     241               4 :                                                 itemnode = php_dom_libxml_notation_iter(objmap->ht, index);
     242                 :                                         }
     243                 :                                 }
     244                 :                         } else {
     245               1 :                                 nodep = dom_object_get_node(objmap->baseobj);
     246               1 :                                 if (nodep) {
     247               1 :                                         curnode = (xmlNodePtr)nodep->properties;
     248               1 :                                         count = 0;
     249               2 :                                         while (count < index && curnode != NULL) {
     250               0 :                                                 count++;
     251               0 :                                                 curnode = (xmlNodePtr)curnode->next;
     252                 :                                         }
     253               1 :                                         itemnode = curnode;
     254                 :                                 }
     255                 :                         }
     256                 :                 }
     257                 : 
     258              10 :                 if (itemnode) {
     259               9 :                         DOM_RET_OBJ(rv, itemnode, &ret, objmap->baseobj);
     260               9 :                         return;
     261                 :                 }
     262                 :         }
     263                 : 
     264               1 :         RETVAL_NULL();
     265                 : }
     266                 : /* }}} end dom_namednodemap_item */
     267                 : 
     268                 : 
     269                 : /* {{{ proto DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);
     270                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS
     271                 : Since: DOM Level 2
     272                 : */
     273                 : PHP_FUNCTION(dom_namednodemap_get_named_item_ns)
     274               0 : {
     275               0 :         zval *id, *rv = NULL;
     276               0 :         int ret, namedlen=0, urilen=0;
     277                 :         dom_object *intern;
     278               0 :         xmlNodePtr itemnode = NULL;
     279                 :         char *uri, *named;
     280                 : 
     281                 :         dom_nnodemap_object *objmap;
     282                 :         xmlNodePtr nodep;
     283               0 :         xmlNotation *notep = NULL;
     284                 : 
     285               0 :         if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os!s", &id, dom_namednodemap_class_entry, &uri, &urilen, &named, &namedlen) == FAILURE) {
     286               0 :                 return;
     287                 :         }
     288                 : 
     289               0 :         intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
     290                 : 
     291               0 :         objmap = (dom_nnodemap_object *)intern->ptr;
     292                 : 
     293               0 :         if (objmap != NULL) {
     294               0 :                 if ((objmap->nodetype == XML_NOTATION_NODE) || 
     295                 :                         objmap->nodetype == XML_ENTITY_NODE) {
     296               0 :                         if (objmap->ht) {
     297               0 :                                 if (objmap->nodetype == XML_ENTITY_NODE) {
     298               0 :                                         itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, named);
     299                 :                                 } else {
     300               0 :                                         notep = (xmlNotation *)xmlHashLookup(objmap->ht, named);
     301               0 :                                         if (notep) {
     302               0 :                                                 itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
     303                 :                                         }
     304                 :                                 }
     305                 :                         }
     306                 :                 } else {
     307               0 :                         nodep = dom_object_get_node(objmap->baseobj);
     308               0 :                         if (nodep) {
     309               0 :                                 itemnode = (xmlNodePtr)xmlHasNsProp(nodep, named, uri);
     310                 :                         }
     311                 :                 }
     312                 :         }
     313                 : 
     314               0 :         if (itemnode) {
     315               0 :                 DOM_RET_OBJ(rv, itemnode, &ret, objmap->baseobj);
     316               0 :                 return;
     317                 :         } else {
     318               0 :                 RETVAL_NULL();
     319                 :         }
     320                 : }
     321                 : /* }}} end dom_namednodemap_get_named_item_ns */
     322                 : 
     323                 : 
     324                 : /* {{{ proto DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);
     325                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS
     326                 : Since: DOM Level 2
     327                 : */
     328                 : PHP_FUNCTION(dom_namednodemap_set_named_item_ns)
     329               0 : {
     330               0 :  DOM_NOT_IMPLEMENTED();
     331                 : }
     332                 : /* }}} end dom_namednodemap_set_named_item_ns */
     333                 : 
     334                 : 
     335                 : /* {{{ proto DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);
     336                 : URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS
     337                 : Since: DOM Level 2
     338                 : */
     339                 : PHP_FUNCTION(dom_namednodemap_remove_named_item_ns)
     340               0 : {
     341               0 :  DOM_NOT_IMPLEMENTED();
     342                 : }
     343                 : /* }}} end dom_namednodemap_remove_named_item_ns */
     344                 : #endif

Generated by: LTP GCOV extension version 1.5

Generated at Thu, 19 Nov 2009 08:20:06 +0000 (5 days ago)

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