php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
element.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018-2021 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7#ifndef LEXBOR_DOM_ELEMENT_H
8#define LEXBOR_DOM_ELEMENT_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/str.h"
15
20
21#include "lexbor/tag/tag.h"
22
23
31
34
35 /* For example: <LalAla:DiV Fix:Me="value"> */
36
37 /* uppercase, with prefix: LALALA:DIV */
39
40 /* original, with prefix: LalAla:DiV */
42
44
47
50
52};
53
54
57
60 const lxb_dom_element_t *element);
61
64
67 const lxb_dom_element_t *src);
68
71 const lxb_char_t *local_name, size_t lname_len,
72 const lxb_char_t *ns_name, size_t ns_len,
73 const lxb_char_t *prefix, size_t prefix_len,
74 const lxb_char_t *is, size_t is_len,
75 bool sync_custom);
76
79
80LXB_API bool
82
85 const lxb_char_t *qualified_name, size_t qn_len,
86 const lxb_char_t *value, size_t value_len);
87
88LXB_API const lxb_char_t *
90 const lxb_char_t *qualified_name, size_t qn_len,
91 size_t *value_len);
92
95 const lxb_char_t *qualified_name, size_t qn_len);
96
97LXB_API bool
99 const lxb_char_t *qualified_name, size_t qn_len);
100
103
106
109 const lxb_char_t *qualified_name, size_t length);
110
114
117 lxb_dom_attr_id_t attr_id);
118
122
123LXB_API bool
125
128 const lxb_char_t *qualified_name, size_t length);
129
132 const lxb_char_t *is, size_t is_len);
133
136 lxb_dom_collection_t *collection,
137 const lxb_char_t *qualified_name, size_t len);
138
141 lxb_dom_collection_t *collection,
142 const lxb_char_t *class_name, size_t len);
143
146 lxb_dom_collection_t *collection,
147 const lxb_char_t *qualified_name, size_t qname_len,
148 const lxb_char_t *value, size_t value_len,
149 bool case_insensitive);
150
153 lxb_dom_collection_t *collection,
154 const lxb_char_t *qualified_name, size_t qname_len,
155 const lxb_char_t *value, size_t value_len,
156 bool case_insensitive);
157
160 lxb_dom_collection_t *collection,
161 const lxb_char_t *qualified_name, size_t qname_len,
162 const lxb_char_t *value, size_t value_len,
163 bool case_insensitive);
164
167 lxb_dom_collection_t *collection,
168 const lxb_char_t *qualified_name, size_t qname_len,
169 const lxb_char_t *value, size_t value_len,
170 bool case_insensitive);
171
172LXB_API const lxb_char_t *
174
175LXB_API const lxb_char_t *
177
178LXB_API const lxb_char_t *
180
181LXB_API const lxb_char_t *
183
184LXB_API const lxb_char_t *
186
187
188/*
189 * Inline functions
190 */
193{
194 if (element->attr_id == NULL) {
195 if (len != NULL) {
196 *len = 0;
197 }
198
199 return NULL;
200 }
201
202 return lxb_dom_attr_value(element->attr_id, len);
203}
204
207{
208 if (element->attr_class == NULL) {
209 if (len != NULL) {
210 *len = 0;
211 }
212
213 return NULL;
214 }
215
216 return lxb_dom_attr_value(element->attr_class, len);
217}
218
219lxb_inline bool
224
225lxb_inline bool
231
234{
235 return element->first_attr;
236}
237
243
249
252{
253 return element->last_attr;
254}
255
258{
259 return element->attr_id;
260}
261
264{
265 return element->attr_class;
266}
267
270{
271 return lxb_dom_interface_node(element)->local_name;
272}
273
276{
277 return lxb_dom_interface_node(element)->ns;
278}
279
280
281/*
282 * No inline functions for ABI.
283 */
284LXB_API const lxb_char_t *
286
287LXB_API const lxb_char_t *
289
290LXB_API bool
292
293LXB_API bool
295
298
301
304
307
310
313
314
315#ifdef __cplusplus
316} /* extern "C" */
317#endif
318
319#endif /* LEXBOR_DOM_ELEMENT_H */
size_t len
Definition apprentice.c:174
lxb_inline const lxb_char_t * lxb_dom_attr_value(lxb_dom_attr_t *attr, size_t *len)
Definition attr.h:124
uintptr_t lxb_dom_attr_id_t
Definition attr_const.h:18
#define LXB_API
Definition def.h:48
struct lxb_dom_document lxb_dom_document_t
Definition interface.h:41
#define lxb_dom_interface_node(obj)
Definition interface.h:31
struct lxb_dom_node lxb_dom_node_t
Definition interface.h:38
struct lxb_dom_attr lxb_dom_attr_t
Definition interface.h:40
struct lxb_dom_element lxb_dom_element_t
Definition interface.h:39
lxb_inline lxb_dom_attr_t * lxb_dom_element_first_attribute(lxb_dom_element_t *element)
Definition element.h:233
LXB_API lxb_status_t lxb_dom_element_attr_append(lxb_dom_element_t *element, lxb_dom_attr_t *attr)
Definition element.c:346
LXB_API lxb_dom_attr_t * lxb_dom_element_last_attribute_noi(lxb_dom_element_t *element)
Definition element.c:830
LXB_API lxb_status_t lxb_dom_elements_by_attr_end(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
Definition element.c:627
LXB_API const lxb_char_t * lxb_dom_element_class_noi(lxb_dom_element_t *element, size_t *len)
Definition element.c:794
LXB_API lxb_dom_element_t * lxb_dom_element_interface_clone(lxb_dom_document_t *document, const lxb_dom_element_t *element)
Definition element.c:52
LXB_API lxb_dom_attr_t * lxb_dom_element_id_attribute_noi(lxb_dom_element_t *element)
Definition element.c:836
LXB_API lxb_dom_attr_t * lxb_dom_element_next_attribute_noi(lxb_dom_attr_t *attr)
Definition element.c:818
LXB_API lxb_dom_attr_t * lxb_dom_element_attr_by_name(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t length)
Definition element.c:406
LXB_API lxb_dom_attr_t * lxb_dom_element_set_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len, const lxb_char_t *value, size_t value_len)
Definition element.c:249
lxb_dom_element_custom_state_t
Definition element.h:24
@ LXB_DOM_ELEMENT_CUSTOM_STATE_UNDEFINED
Definition element.h:25
@ LXB_DOM_ELEMENT_CUSTOM_STATE_UNCUSTOMIZED
Definition element.h:27
@ LXB_DOM_ELEMENT_CUSTOM_STATE_CUSTOM
Definition element.h:28
@ LXB_DOM_ELEMENT_CUSTOM_STATE_FAILED
Definition element.h:26
LXB_API bool lxb_dom_element_custom_is_defined_noi(lxb_dom_element_t *element)
Definition element.c:806
LXB_API lxb_status_t lxb_dom_element_interface_copy(lxb_dom_element_t *dst, const lxb_dom_element_t *src)
Definition element.c:89
LXB_API const lxb_char_t * lxb_dom_element_local_name(lxb_dom_element_t *element, size_t *len)
Definition element.c:722
LXB_API bool lxb_dom_element_is_custom_noi(lxb_dom_element_t *element)
Definition element.c:800
LXB_API lxb_dom_element_t * lxb_dom_element_interface_create(lxb_dom_document_t *document)
Definition element.c:33
lxb_inline lxb_ns_id_t lxb_dom_element_ns_id(lxb_dom_element_t *element)
Definition element.h:275
LXB_API lxb_status_t lxb_dom_elements_by_attr(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
Definition element.c:603
LXB_API bool lxb_dom_element_compare(lxb_dom_element_t *first, lxb_dom_element_t *second)
Definition element.c:477
LXB_API lxb_dom_element_t * lxb_dom_element_interface_destroy(lxb_dom_element_t *element)
Definition element.c:70
lxb_inline bool lxb_dom_element_custom_is_defined(lxb_dom_element_t *element)
Definition element.h:226
LXB_API lxb_status_t lxb_dom_element_is_set(lxb_dom_element_t *element, const lxb_char_t *is, size_t is_len)
Definition element.c:550
LXB_API lxb_status_t lxb_dom_element_attr_remove(lxb_dom_element_t *element, lxb_dom_attr_t *attr)
Definition element.c:396
LXB_API lxb_status_t lxb_dom_element_remove_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len)
Definition element.c:317
LXB_API lxb_dom_attr_t * lxb_dom_element_prev_attribute_noi(lxb_dom_attr_t *attr)
Definition element.c:824
lxb_inline lxb_dom_attr_t * lxb_dom_element_prev_attribute(lxb_dom_attr_t *attr)
Definition element.h:245
LXB_API const lxb_char_t * lxb_dom_element_qualified_name_upper(lxb_dom_element_t *element, size_t *len)
Definition element.c:670
LXB_API lxb_dom_element_t * lxb_dom_element_create(lxb_dom_document_t *document, const lxb_char_t *local_name, size_t lname_len, const lxb_char_t *ns_name, size_t ns_len, const lxb_char_t *prefix, size_t prefix_len, const lxb_char_t *is, size_t is_len, bool sync_custom)
Definition element.c:158
LXB_API lxb_status_t lxb_dom_elements_by_class_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *class_name, size_t len)
Definition element.c:594
LXB_API lxb_dom_element_t * lxb_dom_element_destroy(lxb_dom_element_t *element)
Definition element.c:237
lxb_inline lxb_dom_attr_t * lxb_dom_element_next_attribute(lxb_dom_attr_t *attr)
Definition element.h:239
LXB_API lxb_dom_attr_t * lxb_dom_element_attr_by_local_name_data(lxb_dom_element_t *element, const lxb_dom_attr_data_t *data)
Definition element.c:441
lxb_inline bool lxb_dom_element_is_custom(lxb_dom_element_t *element)
Definition element.h:220
LXB_API lxb_dom_attr_t * lxb_dom_element_class_attribute_noi(lxb_dom_element_t *element)
Definition element.c:842
LXB_API lxb_dom_attr_t * lxb_dom_element_first_attribute_noi(lxb_dom_element_t *element)
Definition element.c:812
LXB_API bool lxb_dom_element_has_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len)
Definition element.c:339
LXB_API lxb_status_t lxb_dom_elements_by_tag_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t len)
Definition element.c:585
lxb_inline lxb_dom_attr_t * lxb_dom_element_last_attribute(lxb_dom_element_t *element)
Definition element.h:251
LXB_API lxb_dom_attr_t * lxb_dom_element_attr_is_exist(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t length)
Definition element.c:524
LXB_API const lxb_char_t * lxb_dom_element_id_noi(lxb_dom_element_t *element, size_t *len)
Definition element.c:788
lxb_inline lxb_dom_attr_t * lxb_dom_element_id_attribute(lxb_dom_element_t *element)
Definition element.h:257
LXB_API const lxb_char_t * lxb_dom_element_prefix(lxb_dom_element_t *element, size_t *len)
Definition element.c:743
lxb_inline lxb_dom_attr_t * lxb_dom_element_class_attribute(lxb_dom_element_t *element)
Definition element.h:263
LXB_API lxb_dom_attr_t * lxb_dom_element_attr_by_id(lxb_dom_element_t *element, lxb_dom_attr_id_t attr_id)
Definition element.c:460
LXB_API lxb_dom_attr_t * lxb_dom_element_attr_by_data(lxb_dom_element_t *element, const lxb_dom_attr_data_t *data)
LXB_API const lxb_char_t * lxb_dom_element_tag_name(lxb_dom_element_t *element, size_t *len)
Definition element.c:769
LXB_API bool lxb_dom_element_has_attributes(lxb_dom_element_t *element)
Definition element.c:243
lxb_inline const lxb_char_t * lxb_dom_element_class(lxb_dom_element_t *element, size_t *len)
Definition element.h:206
LXB_API const lxb_char_t * lxb_dom_element_qualified_name(lxb_dom_element_t *element, size_t *len)
Definition element.c:651
lxb_inline const lxb_char_t * lxb_dom_element_id(lxb_dom_element_t *element, size_t *len)
Definition element.h:192
LXB_API const lxb_char_t * lxb_dom_element_get_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len, size_t *value_len)
Definition element.c:298
LXB_API lxb_status_t lxb_dom_elements_by_attr_begin(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
Definition element.c:615
LXB_API lxb_status_t lxb_dom_elements_by_attr_contain(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
Definition element.c:639
lxb_inline lxb_tag_id_t lxb_dom_element_tag_id(lxb_dom_element_t *element)
Definition element.h:269
new_type attr
Definition ffi.c:4364
#define NULL
Definition gdcache.h:45
#define prefix
uintptr_t lxb_ns_id_t
Definition const.h:20
zend_constant * data
lxb_dom_attr_id_t upper_name
Definition element.h:38
lxb_dom_element_custom_state_t custom_state
Definition element.h:51
lxb_dom_attr_t * attr_class
Definition element.h:49
lxb_dom_attr_t * last_attr
Definition element.h:46
lxb_dom_node_t node
Definition element.h:33
lxb_dom_attr_t * first_attr
Definition element.h:45
lxb_dom_attr_id_t qualified_name
Definition element.h:41
lxb_dom_attr_t * attr_id
Definition element.h:48
lexbor_str_t * is_value
Definition element.h:43
uintptr_t lxb_tag_id_t
Definition const.h:21
unsigned int lxb_status_t
Definition types.h:28
#define lxb_inline
Definition types.h:21
unsigned char lxb_char_t
Definition types.h:27
value