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_HTML_DOCUMENT_H
8#define LEXBOR_HTML_DOCUMENT_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/mraw.h"
15#include "lexbor/core/avl.h"
16
17#include "lexbor/tag/tag.h"
18#include "lexbor/ns/ns.h"
22#include "lexbor/css/css.h"
23
24
27
28typedef unsigned int lxb_html_document_opt_t;
29
37
42
56
73
74
77
80
81
84
85LXB_API void
87
90
93
94LXB_API void
96
97LXB_API void
99
100LXB_API void
102 lxb_css_parser_t *parser);
103
104LXB_API void
106 lxb_css_memory_t *memory);
107
108LXB_API uintptr_t
110 const lxb_char_t *key, size_t length);
111
112LXB_API uintptr_t
114 const lxb_char_t *key, size_t length);
115
119
123
127
131
134
135LXB_API void
137 bool destroy_memory);
138
141 lxb_css_rule_style_t *style);
142
145 lxb_css_rule_style_t *style);
146
149 lxb_html_element_t *element,
150 lxb_css_rule_style_t *style);
151
154
155LXB_API void
157
160 const lxb_char_t *html, size_t size);
161
164
167 const lxb_char_t *html, size_t size);
168
171
174 lxb_dom_element_t *element,
175 const lxb_char_t *html, size_t size);
176
179 lxb_dom_element_t *element);
180
183 const lxb_char_t *html, size_t size);
184
187
188LXB_API const lxb_char_t *
190
193 const lxb_char_t *title, size_t len);
194
195LXB_API const lxb_char_t *
197
200 bool deep);
201
202/*
203 * Inline functions
204 */
207{
208 return document->head;
209}
210
213{
214 return document->body;
215}
216
219{
220 if (lxb_dom_interface_node(document)->owner_document
221 != &document->dom_document)
222 {
223 return lxb_dom_interface_node(document)->owner_document;
224 }
225
226 return lxb_dom_interface_document(document);
227}
228
229lxb_inline bool
231{
232 return lxb_dom_interface_node(document)->owner_document
233 == &document->dom_document;
234}
235
238{
239 return (lexbor_mraw_t *) lxb_dom_interface_document(document)->mraw;
240}
241
247
248lxb_inline void
251{
252 document->opt = opt;
253}
254
257{
258 return document->opt;
259}
260
263{
264 return document->dom_document.tags;
265}
266
267lxb_inline void *
269 size_t struct_size)
270{
271 return lexbor_mraw_calloc(lxb_dom_interface_document(document)->mraw,
272 struct_size);
273}
274
275lxb_inline void *
280
283 const lxb_char_t *local_name, size_t lname_len,
284 void *reserved_for_opt)
285{
287 local_name, lname_len,
288 reserved_for_opt);
289}
290
296
297/*
298 * No inline functions for ABI.
299 */
302
305
308
309LXB_API bool
311
314
317
318LXB_API void
321
324
325LXB_API void *
327 size_t struct_size);
328
329LXB_API void *
331
334 const lxb_char_t *local_name,
335 size_t lname_len, void *reserved_for_opt);
336
339
340
341#ifdef __cplusplus
342} /* extern "C" */
343#endif
344
345#endif /* LEXBOR_HTML_DOCUMENT_H */
size_t len
Definition apprentice.c:174
struct lexbor_avl lexbor_avl_t
Definition avl.h:18
struct lxb_css_stylesheet lxb_css_stylesheet_t
Definition base.h:65
struct lxb_css_rule_style lxb_css_rule_style_t
Definition base.h:67
struct lxb_css_memory lxb_css_memory_t
struct lxb_css_parser lxb_css_parser_t
Definition base.h:41
struct lxb_css_selectors lxb_css_selectors_t
Definition base.h:38
#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
#define lxb_dom_interface_document(obj)
Definition interface.h:25
struct lxb_dom_node lxb_dom_node_t
Definition interface.h:38
struct lxb_dom_element lxb_dom_element_t
Definition interface.h:39
LXB_API lxb_dom_element_t * lxb_dom_document_destroy_element(lxb_dom_element_t *element)
Definition document.c:263
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
new_type size
Definition ffi.c:4365
struct lexbor_hash lexbor_hash_t
Definition hash.h:41
struct lxb_html_body_element lxb_html_body_element_t
Definition interface.h:101
struct lxb_html_element lxb_html_element_t
Definition interface.h:111
struct lxb_html_head_element lxb_html_head_element_t
Definition interface.h:119
struct lxb_html_document lxb_html_document_t
Definition interface.h:95
LXB_API void * lxb_html_document_destroy_struct_noi(lxb_html_document_t *document, void *data)
Definition document.c:1344
lxb_html_document_ready_state_t
Definition document.h:30
@ LXB_HTML_DOCUMENT_READY_STATE_UNDEF
Definition document.h:31
@ LXB_HTML_DOCUMENT_READY_STATE_LOADING
Definition document.h:32
@ LXB_HTML_DOCUMENT_READY_STATE_INTERACTIVE
Definition document.h:33
@ LXB_HTML_DOCUMENT_READY_STATE_COMPLETE
Definition document.h:34
lxb_inline lxb_html_head_element_t * lxb_html_document_head_element(lxb_html_document_t *document)
Definition document.h:206
LXB_API void * lxb_html_document_create_struct_noi(lxb_html_document_t *document, size_t struct_size)
Definition document.c:1337
LXB_API lxb_status_t lxb_html_document_style_attach_by_element(lxb_html_document_t *document, lxb_html_element_t *element, lxb_css_rule_style_t *style)
Definition document.c:681
LXB_API lxb_status_t lxb_html_document_element_styles_attach(lxb_html_element_t *element)
Definition document.c:544
LXB_API lxb_status_t lxb_html_document_title_set(lxb_html_document_t *document, const lxb_char_t *title, size_t len)
Definition document.c:939
LXB_API lxb_dom_node_t * lxb_html_document_parse_fragment_chunk_end(lxb_html_document_t *document)
Definition document.c:868
lxb_inline lexbor_hash_t * lxb_html_document_tags(lxb_html_document_t *document)
Definition document.h:262
LXB_API void lxb_html_document_clean(lxb_html_document_t *document)
Definition document.c:195
lxb_inline void * lxb_html_document_destroy_struct(lxb_html_document_t *document, void *data)
Definition document.h:276
LXB_API lxb_dom_node_t * lxb_html_document_parse_fragment(lxb_html_document_t *document, lxb_dom_element_t *element, const lxb_char_t *html, size_t size)
Definition document.c:802
LXB_API lxb_html_document_t * lxb_html_document_create(void)
Definition document.c:189
LXB_API lxb_status_t lxb_html_document_parse_fragment_chunk_begin(lxb_html_document_t *document, lxb_dom_element_t *element)
Definition document.c:841
lxb_inline lxb_dom_element_t * lxb_html_document_destroy_element(lxb_dom_element_t *element)
Definition document.h:292
LXB_API void lxb_html_document_css_destroy(lxb_html_document_t *document)
LXB_API void lxb_html_document_stylesheet_destroy_all(lxb_html_document_t *document, bool destroy_memory)
Definition document.c:585
LXB_API lxb_status_t lxb_html_document_css_customs_init(lxb_html_document_t *document)
Definition document.c:359
lxb_inline lxb_html_body_element_t * lxb_html_document_body_element(lxb_html_document_t *document)
Definition document.h:212
LXB_API lxb_status_t lxb_html_document_stylesheet_add(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
Definition document.c:482
LXB_API lxb_html_body_element_t * lxb_html_document_body_element_noi(lxb_html_document_t *document)
Definition document.c:1294
LXB_API lexbor_mraw_t * lxb_html_document_mraw_text_noi(lxb_html_document_t *document)
Definition document.c:1318
LXB_API void lxb_html_document_css_customs_destroy(lxb_html_document_t *document)
Definition document.c:371
unsigned int lxb_html_document_opt_t
Definition document.h:28
LXB_API lxb_status_t lxb_html_document_css_init(lxb_html_document_t *document)
LXB_API void lxb_html_document_css_memory_attach(lxb_html_document_t *document, lxb_css_memory_t *memory)
Definition document.c:352
LXB_API lxb_status_t lxb_html_document_parse_chunk_begin(lxb_html_document_t *document)
Definition document.c:770
LXB_API lxb_status_t lxb_html_document_parse_chunk_end(lxb_html_document_t *document)
Definition document.c:796
LXB_API lxb_html_document_t * lxb_html_document_interface_destroy(lxb_html_document_t *document)
Definition document.c:166
lxb_status_t(* lxb_html_document_done_cb_f)(lxb_html_document_t *document)
Definition document.h:26
LXB_API lxb_status_t lxb_html_document_style_attach(lxb_html_document_t *document, lxb_css_rule_style_t *style)
Definition document.c:604
LXB_API lexbor_mraw_t * lxb_html_document_mraw_noi(lxb_html_document_t *document)
Definition document.c:1312
LXB_API lxb_html_head_element_t * lxb_html_document_head_element_noi(lxb_html_document_t *document)
Definition document.c:1288
LXB_API lxb_status_t lxb_html_document_style_remove(lxb_html_document_t *document, lxb_css_rule_style_t *style)
Definition document.c:617
lxb_html_document_opt
Definition document.h:38
@ LXB_HTML_DOCUMENT_OPT_UNDEF
Definition document.h:39
@ LXB_HTML_DOCUMENT_PARSE_WO_COPY
Definition document.h:40
LXB_API lxb_html_document_t * lxb_html_document_interface_create(lxb_html_document_t *document)
Definition document.c:122
LXB_API lxb_html_document_t * lxb_html_document_destroy(lxb_html_document_t *document)
Definition document.c:721
lxb_inline lxb_dom_document_t * lxb_html_document_original_ref(lxb_html_document_t *document)
Definition document.h:218
lxb_inline lexbor_mraw_t * lxb_html_document_mraw(lxb_html_document_t *document)
Definition document.h:237
LXB_API bool lxb_html_document_is_original_noi(lxb_html_document_t *document)
Definition document.c:1306
LXB_API lxb_status_t lxb_html_document_stylesheet_attach(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
Definition document.c:430
lxb_inline bool lxb_html_document_is_original(lxb_html_document_t *document)
Definition document.h:230
LXB_API uintptr_t lxb_html_document_css_customs_find_id(lxb_html_document_t *document, const lxb_char_t *key, size_t length)
Definition document.c:377
LXB_API lxb_status_t lxb_html_document_parse(lxb_html_document_t *document, const lxb_char_t *html, size_t size)
Definition document.c:727
lxb_inline lexbor_mraw_t * lxb_html_document_mraw_text(lxb_html_document_t *document)
Definition document.h:243
LXB_API lxb_status_t lxb_html_document_parse_chunk(lxb_html_document_t *document, const lxb_char_t *html, size_t size)
Definition document.c:788
LXB_API lxb_status_t lxb_html_document_stylesheet_remove(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
Definition document.c:493
LXB_API lxb_dom_element_t * lxb_html_document_destroy_element_noi(lxb_dom_element_t *element)
Definition document.c:1359
LXB_API lxb_html_element_t * lxb_html_document_create_element_noi(lxb_html_document_t *document, const lxb_char_t *local_name, size_t lname_len, void *reserved_for_opt)
Definition document.c:1350
lxb_inline void * lxb_html_document_create_struct(lxb_html_document_t *document, size_t struct_size)
Definition document.h:268
lxb_inline lxb_html_element_t * lxb_html_document_create_element(lxb_html_document_t *document, const lxb_char_t *local_name, size_t lname_len, void *reserved_for_opt)
Definition document.h:282
LXB_API void lxb_html_document_css_parser_attach(lxb_html_document_t *document, lxb_css_parser_t *parser)
Definition document.c:345
LXB_API uintptr_t lxb_html_document_css_customs_id(lxb_html_document_t *document, const lxb_char_t *key, size_t length)
Definition document.c:410
LXB_API lxb_html_document_opt_t lxb_html_document_opt_noi(lxb_html_document_t *document)
Definition document.c:1331
LXB_API void lxb_html_document_css_clean(lxb_html_document_t *document)
lxb_inline void lxb_html_document_opt_set(lxb_html_document_t *document, lxb_html_document_opt_t opt)
Definition document.h:249
LXB_API lxb_status_t lxb_html_document_parse_fragment_chunk(lxb_html_document_t *document, const lxb_char_t *html, size_t size)
Definition document.c:860
LXB_API void lxb_html_document_opt_set_noi(lxb_html_document_t *document, lxb_html_document_opt_t opt)
Definition document.c:1324
LXB_API lxb_status_t lxb_html_document_stylesheet_apply(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
Definition document.c:444
LXB_API const lxb_char_t * lxb_html_document_title_raw(lxb_html_document_t *document, size_t *len)
Definition document.c:978
LXB_API const lxb_char_t * lxb_html_document_title(lxb_html_document_t *document, size_t *len)
Definition document.c:925
LXB_API lxb_dom_document_t * lxb_html_document_original_ref_noi(lxb_html_document_t *document)
Definition document.c:1300
LXB_API lxb_dom_node_t * lxb_html_document_import_node(lxb_html_document_t *doc, lxb_dom_node_t *node, bool deep)
Definition document.c:1004
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
unsigned char key[REFLECTION_KEY_LEN]
zend_constant * data
lexbor_hash_t * tags
Definition document.h:55
lexbor_array_t * stylesheets
Definition document.h:49
lexbor_hash_t * customs
Definition document.h:52
lexbor_avl_t * styles
Definition document.h:48
lxb_css_parser_t * parser
Definition document.h:46
lxb_css_selectors_t * css_selectors
Definition document.h:45
lxb_css_memory_t * memory
Definition document.h:44
lexbor_dobject_t * weak
Definition document.h:50
lxb_html_head_element_t * head
Definition document.h:62
lxb_html_document_opt_t opt
Definition document.h:71
lxb_html_document_done_cb_f done
Definition document.h:68
lxb_html_document_css_t css
Definition document.h:65
lxb_html_document_ready_state_t ready_state
Definition document.h:69
lxb_html_body_element_t * body
Definition document.h:63
lxb_dom_document_t dom_document
Definition document.h:58
void * iframe_srcdoc
Definition document.h:60
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