1 /* 2 * Copyright (C) 2018 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #include "lexbor/html/interfaces/template_element.h" 8 #include "lexbor/html/interfaces/document.h" 9 10 11 lxb_html_template_element_t * lxb_html_template_element_interface_create(lxb_html_document_t * document)12lxb_html_template_element_interface_create(lxb_html_document_t *document) 13 { 14 lxb_html_template_element_t *element; 15 16 element = lexbor_mraw_calloc(document->dom_document.mraw, 17 sizeof(lxb_html_template_element_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_html_document_original_ref(document); 25 node->type = LXB_DOM_NODE_TYPE_ELEMENT; 26 27 element->content = lxb_dom_document_fragment_interface_create(node->owner_document); 28 if (element->content == NULL) { 29 return lxb_html_template_element_interface_destroy(element); 30 } 31 32 element->content->node.ns = LXB_NS_HTML; 33 element->content->host = lxb_dom_interface_element(element); 34 35 return element; 36 } 37 38 lxb_html_template_element_t * lxb_html_template_element_interface_destroy(lxb_html_template_element_t * template_element)39lxb_html_template_element_interface_destroy(lxb_html_template_element_t *template_element) 40 { 41 (void) lxb_dom_document_fragment_interface_destroy(template_element->content); 42 (void) lxb_dom_node_interface_destroy(lxb_dom_interface_node(template_element)); 43 44 return NULL; 45 } 46