1 /* 2 * Copyright (C) 2018-2021 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #include "lexbor/dom/interfaces/cdata_section.h" 8 #include "lexbor/dom/interfaces/document.h" 9 10 11 lxb_dom_cdata_section_t * lxb_dom_cdata_section_interface_create(lxb_dom_document_t * document)12lxb_dom_cdata_section_interface_create(lxb_dom_document_t *document) 13 { 14 lxb_dom_cdata_section_t *element; 15 16 element = lexbor_mraw_calloc(document->mraw, 17 sizeof(lxb_dom_cdata_section_t)); 18 if (element == NULL) { 19 return NULL; 20 } 21 22 lxb_dom_node_t *node = lxb_dom_interface_node(element); 23 24 node->owner_document = lxb_dom_document_owner(document); 25 node->type = LXB_DOM_NODE_TYPE_CDATA_SECTION; 26 27 return element; 28 } 29 30 lxb_dom_cdata_section_t * lxb_dom_cdata_section_interface_clone(lxb_dom_document_t * document,const lxb_dom_cdata_section_t * cdata)31lxb_dom_cdata_section_interface_clone(lxb_dom_document_t *document, 32 const lxb_dom_cdata_section_t *cdata) 33 { 34 lxb_status_t status; 35 lxb_dom_cdata_section_t *new; 36 37 new = lxb_dom_cdata_section_interface_create(document); 38 if (new == NULL) { 39 return NULL; 40 } 41 42 status = lxb_dom_text_interface_copy(&new->text, &cdata->text); 43 if (status != LXB_STATUS_OK) { 44 return lxb_dom_cdata_section_interface_destroy(new); 45 } 46 47 return new; 48 } 49 50 lxb_dom_cdata_section_t * lxb_dom_cdata_section_interface_destroy(lxb_dom_cdata_section_t * cdata_section)51lxb_dom_cdata_section_interface_destroy(lxb_dom_cdata_section_t *cdata_section) 52 { 53 (void) lxb_dom_text_interface_destroy(lxb_dom_interface_text(cdata_section)); 54 return NULL; 55 } 56