1 /* 2 * Copyright (C) 2018-2021 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #include "lexbor/dom/interfaces/comment.h" 8 #include "lexbor/dom/interfaces/document.h" 9 10 11 lxb_dom_comment_t * lxb_dom_comment_interface_create(lxb_dom_document_t * document)12lxb_dom_comment_interface_create(lxb_dom_document_t *document) 13 { 14 lxb_dom_comment_t *element; 15 16 element = lexbor_mraw_calloc(document->mraw, 17 sizeof(lxb_dom_comment_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_COMMENT; 26 27 return element; 28 } 29 30 lxb_dom_comment_t * lxb_dom_comment_interface_clone(lxb_dom_document_t * document,const lxb_dom_comment_t * text)31lxb_dom_comment_interface_clone(lxb_dom_document_t *document, 32 const lxb_dom_comment_t *text) 33 { 34 lxb_status_t status; 35 lxb_dom_comment_t *new; 36 37 new = lxb_dom_comment_interface_create(document); 38 if (new == NULL) { 39 return NULL; 40 } 41 42 status = lxb_dom_comment_interface_copy(new, text); 43 if (status != LXB_STATUS_OK) { 44 return lxb_dom_comment_interface_destroy(new); 45 } 46 47 return new; 48 } 49 50 lxb_dom_comment_t * lxb_dom_comment_interface_destroy(lxb_dom_comment_t * comment)51lxb_dom_comment_interface_destroy(lxb_dom_comment_t *comment) 52 { 53 (void) lxb_dom_character_data_interface_destroy( 54 lxb_dom_interface_character_data(comment)); 55 return NULL; 56 } 57 58 lxb_status_t lxb_dom_comment_interface_copy(lxb_dom_comment_t * dst,const lxb_dom_comment_t * src)59lxb_dom_comment_interface_copy(lxb_dom_comment_t *dst, 60 const lxb_dom_comment_t *src) 61 { 62 return lxb_dom_character_data_interface_copy(&dst->char_data, 63 &src->char_data); 64 } 65