1 /* 2 * Copyright (C) 2018-2021 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #ifndef LEXBOR_DOM_PROCESSING_INSTRUCTION_H 8 #define LEXBOR_DOM_PROCESSING_INSTRUCTION_H 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #include "lexbor/dom/interfaces/document.h" 15 #include "lexbor/dom/interfaces/text.h" 16 17 18 struct lxb_dom_processing_instruction { 19 lxb_dom_character_data_t char_data; 20 21 lexbor_str_t target; 22 }; 23 24 25 LXB_API lxb_dom_processing_instruction_t * 26 lxb_dom_processing_instruction_interface_create(lxb_dom_document_t *document); 27 28 LXB_API lxb_dom_processing_instruction_t * 29 lxb_dom_processing_instruction_interface_clone(lxb_dom_document_t *document, 30 const lxb_dom_processing_instruction_t *processing_instruction); 31 32 LXB_API lxb_dom_processing_instruction_t * 33 lxb_dom_processing_instruction_interface_destroy(lxb_dom_processing_instruction_t *processing_instruction); 34 35 36 LXB_API lxb_status_t 37 lxb_dom_processing_instruction_copy(lxb_dom_processing_instruction_t *dst, 38 const lxb_dom_processing_instruction_t *src); 39 40 /* 41 * Inline functions 42 */ 43 lxb_inline const lxb_char_t * lxb_dom_processing_instruction_target(lxb_dom_processing_instruction_t * pi,size_t * len)44lxb_dom_processing_instruction_target(lxb_dom_processing_instruction_t *pi, 45 size_t *len) 46 { 47 if (len != NULL) { 48 *len = pi->target.length; 49 } 50 51 return pi->target.data; 52 } 53 54 /* 55 * No inline functions for ABI. 56 */ 57 LXB_API const lxb_char_t * 58 lxb_dom_processing_instruction_target_noi(lxb_dom_processing_instruction_t *pi, 59 size_t *len); 60 61 62 #ifdef __cplusplus 63 } /* extern "C" */ 64 #endif 65 66 #endif /* LEXBOR_DOM_PROCESSING_INSTRUCTION_H */ 67