1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
/*
* This file is part of Hubbub.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org>
*/
#ifndef hubbub_treebuilder_element_type_h_
#define hubbub_treebuilder_element_type_h_
#include "treebuilder/treebuilder.h"
#include "utils/utils.h"
typedef enum
{
/* Special */
ADDRESS, AREA, ARTICLE, ASIDE, BASE, BASEFONT, BGSOUND, BLOCKQUOTE,
BODY, BR, CENTER, COL, COLGROUP, COMMAND, DATAGRID, DD, DETAILS,
DIALOG, DIR, DIV, DL, DT, EMBED, FIELDSET, FIGCAPTION, FIGURE, FOOTER,
FORM, FRAME, FRAMESET, H1, H2, H3, H4, H5, H6, HEAD, HEADER, HR, IFRAME,
IMAGE, IMG, INPUT, ISINDEX, LI, LINK, LISTING, MAIN, MENU, META, NAV,
NOEMBED, NOFRAMES, NOSCRIPT, OL, OPTGROUP, OPTION, P, PARAM, PLAINTEXT,
PRE, SCRIPT, SECTION, SELECT, SPACER, STYLE, SUMMARY, TBODY, TEXTAREA,
TFOOT, THEAD, TITLE, TR, UL, WBR,
/* Scoping */
APPLET, BUTTON, CAPTION, HTML, MARQUEE, OBJECT, TABLE, TD, TH,
/* Formatting */
A, B, BIG, CODE, EM, FONT, I, NOBR, S, SMALL, STRIKE, STRONG, TT, U,
/* Phrasing */
/**< \todo Enumerate phrasing elements */
LABEL, OUTPUT, RP, RT, RUBY, SPAN, SUB, SUP, VAR, XMP,
/* MathML */
MATH, MGLYPH, MALIGNMARK, MI, MO, MN, MS, MTEXT, ANNOTATION_XML,
/* SVG */
SVG, FOREIGNOBJECT, /* foreignobject is scoping, but only in SVG ns */
DESC,
UNKNOWN
} element_type;
struct element_type_map {
const char *name;
element_type type;
};
/* Generated by gperf */
const struct element_type_map *hubbub_element_type_lookup(
register const char *str,
register size_t len);
/**
* Convert an element name into an element type
*
* \param treebuilder The treebuilder instance
* \param tag_name The tag name to consider
* \return The corresponding element type
*/
static inline element_type element_type_from_name(
hubbub_treebuilder *treebuilder,
const hubbub_string *tag_name)
{
const struct element_type_map *value;
UNUSED(treebuilder);
value = hubbub_element_type_lookup((const char *)tag_name->ptr,
tag_name->len);
if (value == NULL) {
return UNKNOWN;
}
return value->type;
}
#endif
|