1 /*
2  * Copyright (C) 2018-2021 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #ifndef LEXBOR_DOM_CHARACTER_DATA_H
8 #define LEXBOR_DOM_CHARACTER_DATA_H
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #include "lexbor/core/str.h"
15 
16 #include "lexbor/dom/interfaces/document.h"
17 #include "lexbor/dom/interfaces/node.h"
18 
19 
20 struct lxb_dom_character_data {
21     lxb_dom_node_t node;
22 
23     lexbor_str_t   data;
24 };
25 
26 
27 LXB_API lxb_dom_character_data_t *
28 lxb_dom_character_data_interface_create(lxb_dom_document_t *document);
29 
30 LXB_API lxb_dom_character_data_t *
31 lxb_dom_character_data_interface_clone(lxb_dom_document_t *document,
32                                        const lxb_dom_character_data_t *ch_data);
33 
34 LXB_API lxb_dom_character_data_t *
35 lxb_dom_character_data_interface_destroy(lxb_dom_character_data_t *character_data);
36 
37 LXB_API lxb_status_t
38 lxb_dom_character_data_interface_copy(lxb_dom_character_data_t *dst,
39                                       const lxb_dom_character_data_t *src);
40 
41 LXB_API lxb_status_t
42 lxb_dom_character_data_replace(lxb_dom_character_data_t *ch_data,
43                                const lxb_char_t *data, size_t len,
44                                size_t offset, size_t count);
45 
46 
47 #ifdef __cplusplus
48 } /* extern "C" */
49 #endif
50 
51 #endif /* LEXBOR_DOM_CHARACTER_DATA_H */
52