31
31
* Since:
32
32
*/
33
33
34
- static int get_namednodemap_length (dom_object * obj )
34
+ int php_dom_get_namednodemap_length (dom_object * obj )
35
35
{
36
36
dom_nnodemap_object * objmap = (dom_nnodemap_object * ) obj -> ptr ;
37
37
if (!objmap ) {
@@ -65,95 +65,74 @@ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-
65
65
*/
66
66
int dom_namednodemap_length_read (dom_object * obj , zval * retval )
67
67
{
68
- ZVAL_LONG (retval , get_namednodemap_length (obj ));
68
+ ZVAL_LONG (retval , php_dom_get_namednodemap_length (obj ));
69
69
return SUCCESS ;
70
70
}
71
71
72
72
/* }}} */
73
73
74
- /* {{{ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549
75
- Since:
76
- */
77
- PHP_METHOD (DOMNamedNodeMap , getNamedItem )
74
+ xmlNodePtr php_dom_named_node_map_get_named_item (dom_nnodemap_object * objmap , const char * named , bool may_transform )
78
75
{
79
- zval * id ;
80
- int ret ;
81
- size_t namedlen = 0 ;
82
- dom_object * intern ;
83
76
xmlNodePtr itemnode = NULL ;
84
- char * named ;
85
-
86
- dom_nnodemap_object * objmap ;
87
- xmlNodePtr nodep ;
88
- xmlNotation * notep = NULL ;
89
-
90
- id = ZEND_THIS ;
91
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "s" , & named , & namedlen ) == FAILURE ) {
92
- RETURN_THROWS ();
93
- }
94
-
95
- intern = Z_DOMOBJ_P (id );
96
-
97
- objmap = (dom_nnodemap_object * )intern -> ptr ;
98
-
99
77
if (objmap != NULL ) {
100
78
if ((objmap -> nodetype == XML_NOTATION_NODE ) ||
101
79
objmap -> nodetype == XML_ENTITY_NODE ) {
102
80
if (objmap -> ht ) {
103
81
if (objmap -> nodetype == XML_ENTITY_NODE ) {
104
- itemnode = (xmlNodePtr )xmlHashLookup (objmap -> ht , (xmlChar * ) named );
82
+ itemnode = (xmlNodePtr )xmlHashLookup (objmap -> ht , (const xmlChar * ) named );
105
83
} else {
106
- notep = ( xmlNotation * ) xmlHashLookup (objmap -> ht , (xmlChar * ) named );
84
+ xmlNotationPtr notep = xmlHashLookup (objmap -> ht , (const xmlChar * ) named );
107
85
if (notep ) {
108
- itemnode = create_notation (notep -> name , notep -> PublicID , notep -> SystemID );
86
+ if (may_transform ) {
87
+ itemnode = create_notation (notep -> name , notep -> PublicID , notep -> SystemID );
88
+ } else {
89
+ itemnode = (xmlNodePtr ) notep ;
90
+ }
109
91
}
110
92
}
111
93
}
112
94
} else {
113
- nodep = dom_object_get_node (objmap -> baseobj );
95
+ xmlNodePtr nodep = dom_object_get_node (objmap -> baseobj );
114
96
if (nodep ) {
115
- itemnode = (xmlNodePtr )xmlHasProp (nodep , (xmlChar * ) named );
97
+ itemnode = (xmlNodePtr )xmlHasProp (nodep , (const xmlChar * ) named );
116
98
}
117
99
}
118
100
}
101
+ return itemnode ;
102
+ }
119
103
104
+ void php_dom_named_node_map_get_named_item_into_zval (dom_nnodemap_object * objmap , const char * named , zval * return_value )
105
+ {
106
+ int ret ;
107
+ xmlNodePtr itemnode = php_dom_named_node_map_get_named_item (objmap , named , true);
120
108
if (itemnode ) {
121
109
DOM_RET_OBJ (itemnode , & ret , objmap -> baseobj );
122
- return ;
123
110
} else {
124
- RETVAL_NULL ();
111
+ RETURN_NULL ();
125
112
}
126
113
}
127
- /* }}} end dom_namednodemap_get_named_item */
128
114
129
- /* {{{ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9
115
+ /* {{{ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549
130
116
Since:
131
117
*/
132
- PHP_METHOD (DOMNamedNodeMap , item )
118
+ PHP_METHOD (DOMNamedNodeMap , getNamedItem )
133
119
{
134
- zval * id ;
135
- zend_long index ;
136
- int ret ;
137
- dom_object * intern ;
138
- xmlNodePtr itemnode = NULL ;
139
-
140
- dom_nnodemap_object * objmap ;
141
- xmlNodePtr nodep , curnode ;
142
- int count ;
120
+ size_t namedlen ;
121
+ char * named ;
143
122
144
- id = ZEND_THIS ;
145
- ZEND_PARSE_PARAMETERS_START (1 , 1 )
146
- Z_PARAM_LONG (index )
147
- ZEND_PARSE_PARAMETERS_END ();
148
- if (index < 0 || ZEND_LONG_INT_OVFL (index )) {
149
- zend_argument_value_error (1 , "must be between 0 and %d" , INT_MAX );
123
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "s" , & named , & namedlen ) == FAILURE ) {
150
124
RETURN_THROWS ();
151
125
}
152
126
153
- intern = Z_DOMOBJ_P (id );
154
-
155
- objmap = (dom_nnodemap_object * )intern -> ptr ;
127
+ zval * id = ZEND_THIS ;
128
+ dom_nnodemap_object * objmap = Z_DOMOBJ_P (id )-> ptr ;
129
+ php_dom_named_node_map_get_named_item_into_zval (objmap , named , return_value );
130
+ }
131
+ /* }}} end dom_namednodemap_get_named_item */
156
132
133
+ xmlNodePtr php_dom_named_node_map_get_item (dom_nnodemap_object * objmap , zend_long index )
134
+ {
135
+ xmlNodePtr itemnode = NULL ;
157
136
if (objmap != NULL ) {
158
137
if ((objmap -> nodetype == XML_NOTATION_NODE ) ||
159
138
objmap -> nodetype == XML_ENTITY_NODE ) {
@@ -165,10 +144,10 @@ PHP_METHOD(DOMNamedNodeMap, item)
165
144
}
166
145
}
167
146
} else {
168
- nodep = dom_object_get_node (objmap -> baseobj );
147
+ xmlNodePtr nodep = dom_object_get_node (objmap -> baseobj );
169
148
if (nodep ) {
170
- curnode = (xmlNodePtr )nodep -> properties ;
171
- count = 0 ;
149
+ xmlNodePtr curnode = (xmlNodePtr )nodep -> properties ;
150
+ zend_long count = 0 ;
172
151
while (count < index && curnode != NULL ) {
173
152
count ++ ;
174
153
curnode = (xmlNodePtr )curnode -> next ;
@@ -177,13 +156,38 @@ PHP_METHOD(DOMNamedNodeMap, item)
177
156
}
178
157
}
179
158
}
159
+ return itemnode ;
160
+ }
180
161
162
+ void php_dom_named_node_map_get_item_into_zval (dom_nnodemap_object * objmap , zend_long index , zval * return_value )
163
+ {
164
+ int ret ;
165
+ xmlNodePtr itemnode = php_dom_named_node_map_get_item (objmap , index );
181
166
if (itemnode ) {
182
167
DOM_RET_OBJ (itemnode , & ret , objmap -> baseobj );
183
- return ;
168
+ } else {
169
+ RETURN_NULL ();
170
+ }
171
+ }
172
+
173
+ /* {{{ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9
174
+ Since:
175
+ */
176
+ PHP_METHOD (DOMNamedNodeMap , item )
177
+ {
178
+ zend_long index ;
179
+ ZEND_PARSE_PARAMETERS_START (1 , 1 )
180
+ Z_PARAM_LONG (index )
181
+ ZEND_PARSE_PARAMETERS_END ();
182
+ if (index < 0 || ZEND_LONG_INT_OVFL (index )) {
183
+ zend_argument_value_error (1 , "must be between 0 and %d" , INT_MAX );
184
+ RETURN_THROWS ();
184
185
}
185
186
186
- RETVAL_NULL ();
187
+ zval * id = ZEND_THIS ;
188
+ dom_object * intern = Z_DOMOBJ_P (id );
189
+ dom_nnodemap_object * objmap = intern -> ptr ;
190
+ php_dom_named_node_map_get_item_into_zval (objmap , index , return_value );
187
191
}
188
192
/* }}} end dom_namednodemap_item */
189
193
@@ -254,7 +258,7 @@ PHP_METHOD(DOMNamedNodeMap, count)
254
258
}
255
259
256
260
intern = Z_DOMOBJ_P (id );
257
- RETURN_LONG (get_namednodemap_length (intern ));
261
+ RETURN_LONG (php_dom_get_namednodemap_length (intern ));
258
262
}
259
263
/* }}} end dom_namednodemap_count */
260
264
0 commit comments