php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
document.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_DOCUMENT_H
8#define LEXBOR_DOM_DOCUMENT_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/mraw.h"
15#include "lexbor/core/hash.h"
16
19
20
27
34
67
68
71
74 const lxb_dom_document_t *doc);
75
78
81
84 lxb_dom_interface_create_f create_interface,
85 lxb_dom_interface_clone_f clone_interface,
86 lxb_dom_interface_destroy_f destroy_interface,
87 lxb_dom_document_dtype_t type, unsigned int ns);
88
91
94
95LXB_API void
98
99LXB_API void
101 lxb_dom_element_t *element);
102
105 const lxb_char_t *local_name, size_t lname_len,
106 void *reserved_for_opt);
107
110
113
116 const lxb_char_t *data, size_t len);
117
120 const lxb_char_t *data, size_t len);
121
124 const lxb_char_t *target, size_t target_len,
125 const lxb_char_t *data, size_t data_len);
126
129 const lxb_char_t *data, size_t len);
130
133
136 bool deep);
137
138/*
139 * Inline functions
140 */
143 lxb_tag_id_t tag_id, lxb_ns_id_t ns)
144{
145 return document->create_interface(document, tag_id, ns);
146}
147
150{
151 return lxb_dom_interface_node(intrfc)->owner_document->destroy_interface(intrfc);
152}
153
154lxb_inline void *
156{
157 return lexbor_mraw_calloc(document->mraw, struct_size);
158}
159
160lxb_inline void *
162{
163 return lexbor_mraw_free(document->mraw, structure);
164}
165
168{
169 return (lxb_char_t *) lexbor_mraw_alloc(document->text,
170 sizeof(lxb_char_t) * len);
171}
172
173lxb_inline void *
178
181{
182 return document->element;
183}
184
185lxb_inline bool
187{
188 return document->scripting;
189}
190
191lxb_inline void
193{
194 document->scripting = scripting;
195}
196
199{
200 return lxb_dom_interface_node(document)->owner_document;
201}
202
203lxb_inline bool
205{
206 return lxb_dom_interface_node(document)->owner_document == document;
207}
208
209/*
210 * No inline functions for ABI.
211 */
214 lxb_tag_id_t tag_id, lxb_ns_id_t ns);
215
218
219LXB_API void *
221 size_t struct_size);
222
223LXB_API void *
225 void *structure);
226
229
230LXB_API void *
233
236
237LXB_API bool
239
240LXB_API void
242 bool scripting);
243
244#ifdef __cplusplus
245} /* extern "C" */
246#endif
247
248#endif /* LEXBOR_DOM_DOCUMENT_H */
size_t len
Definition apprentice.c:174
#define LXB_API
Definition def.h:48
struct lxb_dom_document_fragment lxb_dom_document_fragment_t
Definition interface.h:43
lxb_dom_interface_t *(* lxb_dom_interface_create_f)(lxb_dom_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns)
Definition interface.h:61
struct lxb_dom_document lxb_dom_document_t
Definition interface.h:41
struct lxb_dom_document_type lxb_dom_document_type_t
Definition interface.h:42
lxb_status_t(* lxb_dom_event_insert_f)(lxb_dom_node_t *node)
Definition interface.h:72
lxb_dom_interface_t *(* lxb_dom_interface_clone_f)(lxb_dom_document_t *document, const lxb_dom_interface_t *intrfc)
Definition interface.h:65
#define lxb_dom_interface_node(obj)
Definition interface.h:31
struct lxb_dom_comment lxb_dom_comment_t
Definition interface.h:49
struct lxb_dom_cdata_section lxb_dom_cdata_section_t
Definition interface.h:47
lxb_status_t(* lxb_dom_event_remove_f)(lxb_dom_node_t *node)
Definition interface.h:75
struct lxb_dom_node lxb_dom_node_t
Definition interface.h:38
struct lxb_dom_processing_instruction lxb_dom_processing_instruction_t
Definition interface.h:48
void lxb_dom_interface_t
Definition interface.h:51
lxb_dom_interface_t *(* lxb_dom_interface_destroy_f)(lxb_dom_interface_t *intrfc)
Definition interface.h:69
lxb_status_t(* lxb_dom_event_set_value_f)(lxb_dom_node_t *node, const lxb_char_t *value, size_t length)
Definition interface.h:81
struct lxb_dom_text lxb_dom_text_t
Definition interface.h:46
struct lxb_dom_element lxb_dom_element_t
Definition interface.h:39
lxb_status_t(* lxb_dom_event_destroy_f)(lxb_dom_node_t *node)
Definition interface.h:78
LXB_API lxb_dom_interface_t * lxb_dom_document_destroy_interface_noi(lxb_dom_interface_t *intrfc)
Definition document.c:491
LXB_API lxb_dom_text_t * lxb_dom_document_create_text_node(lxb_dom_document_t *document, const lxb_char_t *data, size_t len)
Definition document.c:275
LXB_API lxb_dom_element_t * lxb_dom_document_destroy_element(lxb_dom_element_t *element)
Definition document.c:263
LXB_API lxb_dom_comment_t * lxb_dom_document_create_comment(lxb_dom_document_t *document, const lxb_char_t *data, size_t len)
Definition document.c:390
lxb_inline lxb_dom_element_t * lxb_dom_document_element(lxb_dom_document_t *document)
Definition document.h:180
LXB_API lxb_dom_document_t * lxb_dom_document_destroy(lxb_dom_document_t *document)
Definition document.c:199
LXB_API lxb_char_t * lxb_dom_document_create_text_noi(lxb_dom_document_t *document, size_t len)
Definition document.c:511
LXB_API void * lxb_dom_document_create_struct_noi(lxb_dom_document_t *document, size_t struct_size)
Definition document.c:497
LXB_API void lxb_dom_document_attach_doctype(lxb_dom_document_t *document, lxb_dom_document_type_t *doctype)
Definition document.c:224
LXB_API lxb_dom_document_t * lxb_dom_document_create(lxb_dom_document_t *owner)
Definition document.c:62
lxb_inline bool lxb_dom_document_scripting(lxb_dom_document_t *document)
Definition document.h:186
LXB_API lxb_dom_document_t * lxb_dom_document_interface_clone(lxb_dom_document_t *document, const lxb_dom_document_t *doc)
Definition document.c:35
lxb_inline lxb_char_t * lxb_dom_document_create_text(lxb_dom_document_t *document, size_t len)
Definition document.h:167
LXB_API lxb_dom_document_t * lxb_dom_document_interface_destroy(lxb_dom_document_t *document)
Definition document.c:54
LXB_API lxb_status_t lxb_dom_document_init(lxb_dom_document_t *document, lxb_dom_document_t *owner, lxb_dom_interface_create_f create_interface, lxb_dom_interface_clone_f clone_interface, lxb_dom_interface_destroy_f destroy_interface, lxb_dom_document_dtype_t type, unsigned int ns)
Definition document.c:72
lxb_inline bool lxb_dom_document_is_original(lxb_dom_document_t *document)
Definition document.h:204
LXB_API lxb_dom_document_fragment_t * lxb_dom_document_create_document_fragment(lxb_dom_document_t *document)
Definition document.c:269
lxb_inline lxb_dom_interface_t * lxb_dom_document_create_interface(lxb_dom_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns)
Definition document.h:142
LXB_API lxb_dom_document_t * lxb_dom_document_interface_create(lxb_dom_document_t *document)
Definition document.c:18
LXB_API void lxb_dom_document_attach_element(lxb_dom_document_t *document, lxb_dom_element_t *element)
Definition document.c:231
lxb_inline lxb_dom_document_t * lxb_dom_document_owner(lxb_dom_document_t *document)
Definition document.h:198
LXB_API void lxb_dom_document_scripting_set_noi(lxb_dom_document_t *document, bool scripting)
Definition document.c:536
LXB_API lxb_status_t lxb_dom_document_clean(lxb_dom_document_t *document)
Definition document.c:179
LXB_API void * lxb_dom_document_destroy_struct_noi(lxb_dom_document_t *document, void *structure)
Definition document.c:504
LXB_API void * lxb_dom_document_destroy_text_noi(lxb_dom_document_t *document, lxb_char_t *text)
Definition document.c:517
lxb_inline void * lxb_dom_document_create_struct(lxb_dom_document_t *document, size_t struct_size)
Definition document.h:155
LXB_API lxb_dom_element_t * lxb_dom_document_element_noi(lxb_dom_document_t *document)
Definition document.c:524
LXB_API lxb_dom_node_t * lxb_dom_document_root(lxb_dom_document_t *document)
Definition document.c:412
lxb_inline void lxb_dom_document_scripting_set(lxb_dom_document_t *document, bool scripting)
Definition document.h:192
LXB_API lxb_dom_node_t * lxb_dom_document_import_node(lxb_dom_document_t *doc, lxb_dom_node_t *node, bool deep)
Definition document.c:432
LXB_API lxb_dom_processing_instruction_t * lxb_dom_document_create_processing_instruction(lxb_dom_document_t *document, const lxb_char_t *target, size_t target_len, const lxb_char_t *data, size_t data_len)
Definition document.c:338
LXB_API lxb_dom_interface_t * lxb_dom_document_create_interface_noi(lxb_dom_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns)
Definition document.c:484
LXB_API lxb_dom_element_t * lxb_dom_document_create_element(lxb_dom_document_t *document, const lxb_char_t *local_name, size_t lname_len, void *reserved_for_opt)
Definition document.c:238
lxb_dom_document_cmode_t
Definition document.h:21
@ LXB_DOM_DOCUMENT_CMODE_QUIRKS
Definition document.h:23
@ LXB_DOM_DOCUMENT_CMODE_LIMITED_QUIRKS
Definition document.h:24
@ LXB_DOM_DOCUMENT_CMODE_NO_QUIRKS
Definition document.h:22
LXB_API bool lxb_dom_document_scripting_noi(lxb_dom_document_t *document)
Definition document.c:530
lxb_inline lxb_dom_interface_t * lxb_dom_document_destroy_interface(lxb_dom_interface_t *intrfc)
Definition document.h:149
LXB_API lxb_dom_cdata_section_t * lxb_dom_document_create_cdata_section(lxb_dom_document_t *document, const lxb_char_t *data, size_t len)
Definition document.c:297
lxb_inline void * lxb_dom_document_destroy_struct(lxb_dom_document_t *document, void *structure)
Definition document.h:161
lxb_inline void * lxb_dom_document_destroy_text(lxb_dom_document_t *document, lxb_char_t *text)
Definition document.h:174
lxb_dom_document_dtype_t
Definition document.h:28
@ LXB_DOM_DOCUMENT_DTYPE_XML
Definition document.h:31
@ LXB_DOM_DOCUMENT_DTYPE_UNDEF
Definition document.h:29
@ LXB_DOM_DOCUMENT_DTYPE_HTML
Definition document.h:30
zend_ffi_type * type
Definition ffi.c:3812
struct lexbor_hash lexbor_hash_t
Definition hash.h:41
void * lexbor_mraw_free(lexbor_mraw_t *mraw, void *data)
Definition mraw.c:392
void * lexbor_mraw_calloc(lexbor_mraw_t *mraw, size_t size)
Definition mraw.c:227
void * lexbor_mraw_alloc(lexbor_mraw_t *mraw, size_t size)
Definition mraw.c:180
uintptr_t lxb_ns_id_t
Definition const.h:20
unsigned const char * text
Definition php_ffi.h:53
zend_constant * data
lexbor_hash_t * ns
Definition document.h:58
lxb_dom_node_t node
Definition document.h:36
lxb_dom_document_cmode_t compat_mode
Definition document.h:38
lexbor_mraw_t * mraw
Definition document.h:53
lxb_dom_document_type_t * doctype
Definition document.h:41
lexbor_hash_t * tags
Definition document.h:55
lexbor_mraw_t * text
Definition document.h:54
lxb_dom_event_remove_f ev_remove
Definition document.h:49
lxb_dom_interface_create_f create_interface
Definition document.h:44
lexbor_hash_t * attrs
Definition document.h:56
lxb_dom_interface_destroy_f destroy_interface
Definition document.h:46
lxb_dom_document_dtype_t type
Definition document.h:39
lexbor_hash_t * prefix
Definition document.h:57
lxb_dom_event_insert_f ev_insert
Definition document.h:48
lxb_dom_event_destroy_f ev_destroy
Definition document.h:50
lxb_dom_event_set_value_f ev_set_value
Definition document.h:51
lxb_dom_interface_clone_f clone_interface
Definition document.h:45
lxb_dom_element_t * element
Definition document.h:42
bool tags_inherited
Definition document.h:62
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