This source file includes following definitions.
- dom_namednodemap_length_read
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
- PHP_FUNCTION
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 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
64
65
66
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 PHP_FE_END
78 };
79
80
81
82
83
84
85
86 int dom_namednodemap_length_read(dom_object *obj, zval *retval)
87 {
88 dom_nnodemap_object *objmap;
89 xmlAttrPtr curnode;
90 xmlNodePtr nodep;
91 int count = 0;
92
93 objmap = (dom_nnodemap_object *)obj->ptr;
94
95 if (objmap != NULL) {
96 if ((objmap->nodetype == XML_NOTATION_NODE) ||
97 objmap->nodetype == XML_ENTITY_NODE) {
98 if (objmap->ht) {
99 count = xmlHashSize(objmap->ht);
100 }
101 } else {
102 nodep = dom_object_get_node(objmap->baseobj);
103 if (nodep) {
104 curnode = nodep->properties;
105 if (curnode) {
106 count++;
107 while (curnode->next != NULL) {
108 count++;
109 curnode = curnode->next;
110 }
111 }
112 }
113 }
114 }
115
116 ZVAL_LONG(retval, count);
117 return SUCCESS;
118 }
119
120
121
122
123
124
125
126 PHP_FUNCTION(dom_namednodemap_get_named_item)
127 {
128 zval *id;
129 int ret;
130 size_t namedlen=0;
131 dom_object *intern;
132 xmlNodePtr itemnode = NULL;
133 char *named;
134
135 dom_nnodemap_object *objmap;
136 xmlNodePtr nodep;
137 xmlNotation *notep = NULL;
138
139 if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Os", &id, dom_namednodemap_class_entry, &named, &namedlen) == FAILURE) {
140 return;
141 }
142
143 intern = Z_DOMOBJ_P(id);
144
145 objmap = (dom_nnodemap_object *)intern->ptr;
146
147 if (objmap != NULL) {
148 if ((objmap->nodetype == XML_NOTATION_NODE) ||
149 objmap->nodetype == XML_ENTITY_NODE) {
150 if (objmap->ht) {
151 if (objmap->nodetype == XML_ENTITY_NODE) {
152 itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, (xmlChar *) named);
153 } else {
154 notep = (xmlNotation *)xmlHashLookup(objmap->ht, (xmlChar *) named);
155 if (notep) {
156 itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
157 }
158 }
159 }
160 } else {
161 nodep = dom_object_get_node(objmap->baseobj);
162 if (nodep) {
163 itemnode = (xmlNodePtr)xmlHasProp(nodep, (xmlChar *) named);
164 }
165 }
166 }
167
168 if (itemnode) {
169 DOM_RET_OBJ(itemnode, &ret, objmap->baseobj);
170 return;
171 } else {
172 RETVAL_NULL();
173 }
174 }
175
176
177
178
179
180
181 PHP_FUNCTION(dom_namednodemap_set_named_item)
182 {
183 DOM_NOT_IMPLEMENTED();
184 }
185
186
187
188
189
190
191 PHP_FUNCTION(dom_namednodemap_remove_named_item)
192 {
193 DOM_NOT_IMPLEMENTED();
194 }
195
196
197
198
199
200
201 PHP_FUNCTION(dom_namednodemap_item)
202 {
203 zval *id;
204 zend_long index;
205 int ret;
206 dom_object *intern;
207 xmlNodePtr itemnode = NULL;
208
209 dom_nnodemap_object *objmap;
210 xmlNodePtr nodep, curnode;
211 int count;
212
213 if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Ol", &id, dom_namednodemap_class_entry, &index) == FAILURE) {
214 return;
215 }
216 if (index >= 0) {
217 if (ZEND_LONG_INT_OVFL(index)) {
218 php_error_docref(NULL, E_WARNING, "Invalid index");
219 RETURN_NULL();
220 }
221
222 intern = Z_DOMOBJ_P(id);
223
224 objmap = (dom_nnodemap_object *)intern->ptr;
225
226 if (objmap != NULL) {
227 if ((objmap->nodetype == XML_NOTATION_NODE) ||
228 objmap->nodetype == XML_ENTITY_NODE) {
229 if (objmap->ht) {
230 if (objmap->nodetype == XML_ENTITY_NODE) {
231 itemnode = php_dom_libxml_hash_iter(objmap->ht, index);
232 } else {
233 itemnode = php_dom_libxml_notation_iter(objmap->ht, index);
234 }
235 }
236 } else {
237 nodep = dom_object_get_node(objmap->baseobj);
238 if (nodep) {
239 curnode = (xmlNodePtr)nodep->properties;
240 count = 0;
241 while (count < index && curnode != NULL) {
242 count++;
243 curnode = (xmlNodePtr)curnode->next;
244 }
245 itemnode = curnode;
246 }
247 }
248 }
249
250 if (itemnode) {
251 DOM_RET_OBJ(itemnode, &ret, objmap->baseobj);
252 return;
253 }
254 }
255
256 RETVAL_NULL();
257 }
258
259
260
261
262
263
264 PHP_FUNCTION(dom_namednodemap_get_named_item_ns)
265 {
266 zval *id;
267 int ret;
268 size_t namedlen=0, urilen=0;
269 dom_object *intern;
270 xmlNodePtr itemnode = NULL;
271 char *uri, *named;
272
273 dom_nnodemap_object *objmap;
274 xmlNodePtr nodep;
275 xmlNotation *notep = NULL;
276
277 if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Os!s", &id, dom_namednodemap_class_entry, &uri, &urilen, &named, &namedlen) == FAILURE) {
278 return;
279 }
280
281 intern = Z_DOMOBJ_P(id);
282
283 objmap = (dom_nnodemap_object *)intern->ptr;
284
285 if (objmap != NULL) {
286 if ((objmap->nodetype == XML_NOTATION_NODE) ||
287 objmap->nodetype == XML_ENTITY_NODE) {
288 if (objmap->ht) {
289 if (objmap->nodetype == XML_ENTITY_NODE) {
290 itemnode = (xmlNodePtr)xmlHashLookup(objmap->ht, (xmlChar *) named);
291 } else {
292 notep = (xmlNotation *)xmlHashLookup(objmap->ht, (xmlChar *) named);
293 if (notep) {
294 itemnode = create_notation(notep->name, notep->PublicID, notep->SystemID);
295 }
296 }
297 }
298 } else {
299 nodep = dom_object_get_node(objmap->baseobj);
300 if (nodep) {
301 itemnode = (xmlNodePtr)xmlHasNsProp(nodep, (xmlChar *) named, (xmlChar *) uri);
302 }
303 }
304 }
305
306 if (itemnode) {
307 DOM_RET_OBJ(itemnode, &ret, objmap->baseobj);
308 return;
309 } else {
310 RETVAL_NULL();
311 }
312 }
313
314
315
316
317
318
319 PHP_FUNCTION(dom_namednodemap_set_named_item_ns)
320 {
321 DOM_NOT_IMPLEMENTED();
322 }
323
324
325
326
327
328
329 PHP_FUNCTION(dom_namednodemap_remove_named_item_ns)
330 {
331 DOM_NOT_IMPLEMENTED();
332 }
333
334
335 #endif
336
337
338
339
340
341
342
343
344