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-23 Instrumented lines: 100
Code covered: 67.0 % Executed lines: 67
Legend: not executed executed

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

Generated by: LTP GCOV extension version 1.5

Generated at Mon, 23 Nov 2009 17:39:29 +0000 (34 hours ago)

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