xref: /php-src/ext/dom/lexbor/lexbor/html/token_attr.c (revision bffab33a)
1 /*
2  * Copyright (C) 2018-2020 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #include "lexbor/html/token_attr.h"
8 
9 
10 lxb_html_token_attr_t *
lxb_html_token_attr_create(lexbor_dobject_t * dobj)11 lxb_html_token_attr_create(lexbor_dobject_t *dobj)
12 {
13     return lexbor_dobject_calloc(dobj);
14 }
15 
16 void
lxb_html_token_attr_clean(lxb_html_token_attr_t * attr)17 lxb_html_token_attr_clean(lxb_html_token_attr_t *attr)
18 {
19     memset(attr, 0, sizeof(lxb_html_token_attr_t));
20 }
21 
22 lxb_html_token_attr_t *
lxb_html_token_attr_destroy(lxb_html_token_attr_t * attr,lexbor_dobject_t * dobj)23 lxb_html_token_attr_destroy(lxb_html_token_attr_t *attr, lexbor_dobject_t *dobj)
24 {
25     return lexbor_dobject_free(dobj, attr);
26 }
27 
28 const lxb_char_t *
lxb_html_token_attr_name(lxb_html_token_attr_t * attr,size_t * length)29 lxb_html_token_attr_name(lxb_html_token_attr_t *attr, size_t *length)
30 {
31     if (attr->name == NULL) {
32         if (length != NULL) {
33             *length = 0;
34         }
35 
36         return NULL;
37     }
38 
39     if (length != NULL) {
40         *length = attr->name->entry.length;
41     }
42 
43     return lexbor_hash_entry_str(&attr->name->entry);
44 }
45