diff --git a/src/html/elements.zig b/src/html/elements.zig
index 17df069a..0d93c3d6 100644
--- a/src/html/elements.zig
+++ b/src/html/elements.zig
@@ -5,6 +5,7 @@ const Element = @import("../dom/element.zig").Element;
// HTMLElement interfaces
pub const Interfaces = .{
+ HTMLElement,
HTMLUnknownElement,
HTMLAnchorElement,
HTMLAreaElement,
@@ -16,11 +17,15 @@ pub const Interfaces = .{
HTMLCanvasElement,
HTMLDListElement,
HTMLDataElement,
+ HTMLDataListElement,
HTMLDialogElement,
+ HTMLDirectoryElement,
HTMLDivElement,
HTMLEmbedElement,
HTMLFieldSetElement,
+ HTMLFontElement,
HTMLFormElement,
+ HTMLFrameElement,
HTMLFrameSetElement,
HTMLHRElement,
HTMLHeadElement,
@@ -43,6 +48,7 @@ pub const Interfaces = .{
HTMLOptionElement,
HTMLOutputElement,
HTMLParagraphElement,
+ HTMLParamElement,
HTMLPictureElement,
HTMLPreElement,
HTMLProgressElement,
@@ -161,12 +167,24 @@ pub const HTMLDataElement = struct {
pub const mem_guarantied = true;
};
+pub const HTMLDataListElement = struct {
+ pub const Self = parser.DataList;
+ pub const prototype = *HTMLElement;
+ pub const mem_guarantied = true;
+};
+
pub const HTMLDialogElement = struct {
pub const Self = parser.Dialog;
pub const prototype = *HTMLElement;
pub const mem_guarantied = true;
};
+pub const HTMLDirectoryElement = struct {
+ pub const Self = parser.Directory;
+ pub const prototype = *HTMLElement;
+ pub const mem_guarantied = true;
+};
+
pub const HTMLDivElement = struct {
pub const Self = parser.Div;
pub const prototype = *HTMLElement;
@@ -185,12 +203,24 @@ pub const HTMLFieldSetElement = struct {
pub const mem_guarantied = true;
};
+pub const HTMLFontElement = struct {
+ pub const Self = parser.Font;
+ pub const prototype = *HTMLElement;
+ pub const mem_guarantied = true;
+};
+
pub const HTMLFormElement = struct {
pub const Self = parser.Form;
pub const prototype = *HTMLElement;
pub const mem_guarantied = true;
};
+pub const HTMLFrameElement = struct {
+ pub const Self = parser.Frame;
+ pub const prototype = *HTMLElement;
+ pub const mem_guarantied = true;
+};
+
pub const HTMLFrameSetElement = struct {
pub const Self = parser.FrameSet;
pub const prototype = *HTMLElement;
@@ -323,6 +353,12 @@ pub const HTMLParagraphElement = struct {
pub const mem_guarantied = true;
};
+pub const HTMLParamElement = struct {
+ pub const Self = parser.Param;
+ pub const prototype = *HTMLElement;
+ pub const mem_guarantied = true;
+};
+
pub const HTMLPictureElement = struct {
pub const Self = parser.Picture;
pub const prototype = *HTMLElement;
@@ -459,21 +495,26 @@ pub fn toInterface(comptime T: type, e: *parser.Element) T {
const elem: *align(@alignOf(*parser.Element)) parser.Element = @alignCast(e);
const tag = parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem)));
return switch (tag) {
+ .abbr, .acronym, .address, .article, .aside, .b, .bdi, .bdo, .bgsound, .big, .center, .cite, .code, .dd, .details, .dfn, .dt, .figcaption, .figure, .footer, .header, .hgroup, .i, .isindex, .kbd, .main, .mark, .marquee, .nav, .nobr, .noframes, .noscript, .rp, .rt, .ruby, .s, .samp, .section, .small, .spacer, .strike, .sub, .summary, .sup, .tt, .u, .wbr, ._var => .{ .HTMLElement = @as(*parser.ElementHTML, @ptrCast(elem)) },
.a => .{ .HTMLAnchorElement = @as(*parser.Anchor, @ptrCast(elem)) },
.area => .{ .HTMLAreaElement = @as(*parser.Area, @ptrCast(elem)) },
.audio => .{ .HTMLAudioElement = @as(*parser.Audio, @ptrCast(elem)) },
- .br => .{ .HTMLBRElement = @as(*parser.BR, @ptrCast(elem)) },
.base => .{ .HTMLBaseElement = @as(*parser.Base, @ptrCast(elem)) },
.body => .{ .HTMLBodyElement = @as(*parser.Body, @ptrCast(elem)) },
+ .br => .{ .HTMLBRElement = @as(*parser.BR, @ptrCast(elem)) },
.button => .{ .HTMLButtonElement = @as(*parser.Button, @ptrCast(elem)) },
.canvas => .{ .HTMLCanvasElement = @as(*parser.Canvas, @ptrCast(elem)) },
.dl => .{ .HTMLDListElement = @as(*parser.DList, @ptrCast(elem)) },
.data => .{ .HTMLDataElement = @as(*parser.Data, @ptrCast(elem)) },
+ .datalist => .{ .HTMLDataListElement = @as(*parser.DataList, @ptrCast(elem)) },
.dialog => .{ .HTMLDialogElement = @as(*parser.Dialog, @ptrCast(elem)) },
+ .dir => .{ .HTMLDirectoryElement = @as(*parser.Directory, @ptrCast(elem)) },
.div => .{ .HTMLDivElement = @as(*parser.Div, @ptrCast(elem)) },
.embed => .{ .HTMLEmbedElement = @as(*parser.Embed, @ptrCast(elem)) },
.fieldset => .{ .HTMLFieldSetElement = @as(*parser.FieldSet, @ptrCast(elem)) },
+ .font => .{ .HTMLFontElement = @as(*parser.Font, @ptrCast(elem)) },
.form => .{ .HTMLFormElement = @as(*parser.Form, @ptrCast(elem)) },
+ .frame => .{ .HTMLFrameElement = @as(*parser.Frame, @ptrCast(elem)) },
.frameset => .{ .HTMLFrameSetElement = @as(*parser.FrameSet, @ptrCast(elem)) },
.hr => .{ .HTMLHRElement = @as(*parser.HR, @ptrCast(elem)) },
.head => .{ .HTMLHeadElement = @as(*parser.Head, @ptrCast(elem)) },
@@ -496,6 +537,7 @@ pub fn toInterface(comptime T: type, e: *parser.Element) T {
.option => .{ .HTMLOptionElement = @as(*parser.Option, @ptrCast(elem)) },
.output => .{ .HTMLOutputElement = @as(*parser.Output, @ptrCast(elem)) },
.p => .{ .HTMLParagraphElement = @as(*parser.Paragraph, @ptrCast(elem)) },
+ .param => .{ .HTMLParamElement = @as(*parser.Param, @ptrCast(elem)) },
.picture => .{ .HTMLPictureElement = @as(*parser.Picture, @ptrCast(elem)) },
.pre => .{ .HTMLPreElement = @as(*parser.Pre, @ptrCast(elem)) },
.progress => .{ .HTMLProgressElement = @as(*parser.Progress, @ptrCast(elem)) },
@@ -508,7 +550,7 @@ pub fn toInterface(comptime T: type, e: *parser.Element) T {
.table => .{ .HTMLTableElement = @as(*parser.Table, @ptrCast(elem)) },
.caption => .{ .HTMLTableCaptionElement = @as(*parser.TableCaption, @ptrCast(elem)) },
.th, .td => .{ .HTMLTableCellElement = @as(*parser.TableCell, @ptrCast(elem)) },
- .col => .{ .HTMLTableColElement = @as(*parser.TableCol, @ptrCast(elem)) },
+ .col, .colgroup => .{ .HTMLTableColElement = @as(*parser.TableCol, @ptrCast(elem)) },
.tr => .{ .HTMLTableRowElement = @as(*parser.TableRow, @ptrCast(elem)) },
.thead, .tbody, .tfoot => .{ .HTMLTableSectionElement = @as(*parser.TableSection, @ptrCast(elem)) },
.template => .{ .HTMLTemplateElement = @as(*parser.Template, @ptrCast(elem)) },
diff --git a/src/netsurf.zig b/src/netsurf.zig
index 03b2efb0..b114a298 100644
--- a/src/netsurf.zig
+++ b/src/netsurf.zig
@@ -68,41 +68,81 @@ inline fn stringFromData(data: []const u8) *String {
// Tag
pub const Tag = enum(u8) {
+ acronym = 123, // TODO c.DOM_HTML_ELEMENT_TYPE_ACRONYM,
+ bgsound = 124, // TODO c.DOM_HTML_ELEMENT_TYPE_BGSOUND,
+ big = 125, // TODO c.DOM_HTML_ELEMENT_TYPE_BIG,
+ marquee = 127, // TODO c.DOM_HTML_ELEMENT_TYPE_MARQUEE,
+ nobr = 128, // TODO c.DOM_HTML_ELEMENT_TYPE_NOBR,
+ noframes = 129, // TODO c.DOM_HTML_ELEMENT_TYPE_NOFRAMES,
+ spacer = 130, // TODO c.DOM_HTML_ELEMENT_TYPE_SPACER,
+ strike = 131, // TODO c.DOM_HTML_ELEMENT_TYPE_STRIKE,
+ tt = 132, // TODO c.DOM_HTML_ELEMENT_TYPE_TT,
+
a = c.DOM_HTML_ELEMENT_TYPE_A,
+ abbr = c.DOM_HTML_ELEMENT_TYPE_ABBR,
+ address = c.DOM_HTML_ELEMENT_TYPE_ADDRESS,
+ article = c.DOM_HTML_ELEMENT_TYPE_ARTICLE,
+ aside = c.DOM_HTML_ELEMENT_TYPE_ASIDE,
area = c.DOM_HTML_ELEMENT_TYPE_AREA,
audio = c.DOM_HTML_ELEMENT_TYPE_AUDIO,
+ b = c.DOM_HTML_ELEMENT_TYPE_B,
+ bdi = c.DOM_HTML_ELEMENT_TYPE_BDI,
+ bdo = c.DOM_HTML_ELEMENT_TYPE_BDO,
br = c.DOM_HTML_ELEMENT_TYPE_BR,
base = c.DOM_HTML_ELEMENT_TYPE_BASE,
body = c.DOM_HTML_ELEMENT_TYPE_BODY,
button = c.DOM_HTML_ELEMENT_TYPE_BUTTON,
canvas = c.DOM_HTML_ELEMENT_TYPE_CANVAS,
+ center = c.DOM_HTML_ELEMENT_TYPE_CENTER,
+ cite = c.DOM_HTML_ELEMENT_TYPE_CITE,
+ code = c.DOM_HTML_ELEMENT_TYPE_CODE,
+ dd = c.DOM_HTML_ELEMENT_TYPE_DD,
+ details = c.DOM_HTML_ELEMENT_TYPE_DETAILS,
+ dfn = c.DOM_HTML_ELEMENT_TYPE_DFN,
+ dt = c.DOM_HTML_ELEMENT_TYPE_DT,
dl = c.DOM_HTML_ELEMENT_TYPE_DL,
dialog = c.DOM_HTML_ELEMENT_TYPE_DIALOG,
data = c.DOM_HTML_ELEMENT_TYPE_DATA,
+ datalist = c.DOM_HTML_ELEMENT_TYPE_DATALIST,
+ dir = c.DOM_HTML_ELEMENT_TYPE_DIR,
div = c.DOM_HTML_ELEMENT_TYPE_DIV,
embed = c.DOM_HTML_ELEMENT_TYPE_EMBED,
+ figcaption = c.DOM_HTML_ELEMENT_TYPE_FIGCAPTION,
+ figure = c.DOM_HTML_ELEMENT_TYPE_FIGURE,
fieldset = c.DOM_HTML_ELEMENT_TYPE_FIELDSET,
+ footer = c.DOM_HTML_ELEMENT_TYPE_FOOTER,
+ font = c.DOM_HTML_ELEMENT_TYPE_FONT,
form = c.DOM_HTML_ELEMENT_TYPE_FORM,
+ frame = c.DOM_HTML_ELEMENT_TYPE_FRAME,
frameset = c.DOM_HTML_ELEMENT_TYPE_FRAMESET,
hr = c.DOM_HTML_ELEMENT_TYPE_HR,
head = c.DOM_HTML_ELEMENT_TYPE_HEAD,
+ header = c.DOM_HTML_ELEMENT_TYPE_HEADER,
h1 = c.DOM_HTML_ELEMENT_TYPE_H1,
h2 = c.DOM_HTML_ELEMENT_TYPE_H2,
h3 = c.DOM_HTML_ELEMENT_TYPE_H3,
h4 = c.DOM_HTML_ELEMENT_TYPE_H4,
h5 = c.DOM_HTML_ELEMENT_TYPE_H5,
h6 = c.DOM_HTML_ELEMENT_TYPE_H6,
+ hgroup = c.DOM_HTML_ELEMENT_TYPE_HGROUP,
html = c.DOM_HTML_ELEMENT_TYPE_HTML,
+ i = c.DOM_HTML_ELEMENT_TYPE_I,
+ isindex = c.DOM_HTML_ELEMENT_TYPE_ISINDEX,
iframe = c.DOM_HTML_ELEMENT_TYPE_IFRAME,
img = c.DOM_HTML_ELEMENT_TYPE_IMG,
input = c.DOM_HTML_ELEMENT_TYPE_INPUT,
+ kbd = c.DOM_HTML_ELEMENT_TYPE_KBD,
li = c.DOM_HTML_ELEMENT_TYPE_LI,
label = c.DOM_HTML_ELEMENT_TYPE_LABEL,
legend = c.DOM_HTML_ELEMENT_TYPE_LEGEND,
link = c.DOM_HTML_ELEMENT_TYPE_LINK,
+ main = c.DOM_HTML_ELEMENT_TYPE_MAIN,
map = c.DOM_HTML_ELEMENT_TYPE_MAP,
+ mark = c.DOM_HTML_ELEMENT_TYPE_MARK,
meta = c.DOM_HTML_ELEMENT_TYPE_META,
meter = c.DOM_HTML_ELEMENT_TYPE_METER,
+ nav = c.DOM_HTML_ELEMENT_TYPE_NAV,
+ noscript = c.DOM_HTML_ELEMENT_TYPE_NOSCRIPT,
ins = c.DOM_HTML_ELEMENT_TYPE_INS,
del = c.DOM_HTML_ELEMENT_TYPE_DEL,
ol = c.DOM_HTML_ELEMENT_TYPE_OL,
@@ -111,11 +151,22 @@ pub const Tag = enum(u8) {
option = c.DOM_HTML_ELEMENT_TYPE_OPTION,
output = c.DOM_HTML_ELEMENT_TYPE_OUTPUT,
p = c.DOM_HTML_ELEMENT_TYPE_P,
+ param = c.DOM_HTML_ELEMENT_TYPE_PARAM,
picture = c.DOM_HTML_ELEMENT_TYPE_PICTURE,
pre = c.DOM_HTML_ELEMENT_TYPE_PRE,
progress = c.DOM_HTML_ELEMENT_TYPE_PROGRESS,
blockquote = c.DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE,
q = c.DOM_HTML_ELEMENT_TYPE_Q,
+ rp = c.DOM_HTML_ELEMENT_TYPE_RP,
+ rt = c.DOM_HTML_ELEMENT_TYPE_RT,
+ ruby = c.DOM_HTML_ELEMENT_TYPE_RUBY,
+ s = c.DOM_HTML_ELEMENT_TYPE_S,
+ samp = c.DOM_HTML_ELEMENT_TYPE_SAMP,
+ section = c.DOM_HTML_ELEMENT_TYPE_SECTION,
+ small = c.DOM_HTML_ELEMENT_TYPE_SMALL,
+ sub = c.DOM_HTML_ELEMENT_TYPE_SUB,
+ summary = c.DOM_HTML_ELEMENT_TYPE_SUMMARY,
+ sup = c.DOM_HTML_ELEMENT_TYPE_SUP,
script = c.DOM_HTML_ELEMENT_TYPE_SCRIPT,
select = c.DOM_HTML_ELEMENT_TYPE_SELECT,
source = c.DOM_HTML_ELEMENT_TYPE_SOURCE,
@@ -126,6 +177,7 @@ pub const Tag = enum(u8) {
th = c.DOM_HTML_ELEMENT_TYPE_TH,
td = c.DOM_HTML_ELEMENT_TYPE_TD,
col = c.DOM_HTML_ELEMENT_TYPE_COL,
+ colgroup = c.DOM_HTML_ELEMENT_TYPE_COLGROUP,
tr = c.DOM_HTML_ELEMENT_TYPE_TR,
thead = c.DOM_HTML_ELEMENT_TYPE_THEAD,
tbody = c.DOM_HTML_ELEMENT_TYPE_TBODY,
@@ -135,8 +187,11 @@ pub const Tag = enum(u8) {
time = c.DOM_HTML_ELEMENT_TYPE_TIME,
title = c.DOM_HTML_ELEMENT_TYPE_TITLE,
track = c.DOM_HTML_ELEMENT_TYPE_TRACK,
+ u = c.DOM_HTML_ELEMENT_TYPE_U,
ul = c.DOM_HTML_ELEMENT_TYPE_UL,
+ _var = c.DOM_HTML_ELEMENT_TYPE_VAR,
video = c.DOM_HTML_ELEMENT_TYPE_VIDEO,
+ wbr = c.DOM_HTML_ELEMENT_TYPE_WBR,
undef = c.DOM_HTML_ELEMENT_TYPE__UNKNOWN,
pub fn all() []Tag {
@@ -583,11 +638,15 @@ pub const Button = c.dom_html_button_element;
pub const Canvas = c.dom_html_canvas_element;
pub const DList = c.dom_html_dlist_element;
pub const Data = struct { base: *c.dom_html_element };
+pub const DataList = struct { base: *c.dom_html_element };
pub const Dialog = struct { base: *c.dom_html_element };
+pub const Directory = struct { base: *c.dom_html_element };
pub const Div = c.dom_html_div_element;
pub const Embed = struct { base: *c.dom_html_element };
pub const FieldSet = c.dom_html_field_set_element;
pub const Form = c.dom_html_form_element;
+pub const Font = c.dom_html_font_element;
+pub const Frame = c.dom_html_frame_element;
pub const FrameSet = c.dom_html_frame_set_element;
pub const HR = c.dom_html_hr_element;
pub const Head = c.dom_html_head_element;
@@ -610,6 +669,7 @@ pub const OptGroup = c.dom_html_opt_group_element;
pub const Option = c.dom_html_option_element;
pub const Output = struct { base: *c.dom_html_element };
pub const Paragraph = c.dom_html_paragraph_element;
+pub const Param = c.dom_html_param_element;
pub const Picture = struct { base: *c.dom_html_element };
pub const Pre = c.dom_html_pre_element;
pub const Progress = struct { base: *c.dom_html_element };