nodelist: return struct instead of pointer

This commit is contained in:
Pierre Tachoire
2023-12-19 14:53:45 +01:00
parent c72cf814d0
commit 9f6253b21d
4 changed files with 8 additions and 12 deletions

View File

@@ -210,8 +210,8 @@ pub const Document = struct {
// TODO netsurf doesn't handle query selectors. We have to implement a
// solution by ourselves.
// We handle only * and single id selector like `#foo`.
pub fn _querySelectorAll(self: *parser.Document, alloc: std.mem.Allocator, selectors: []const u8) !*NodeList {
const list = try NodeList.init(alloc);
pub fn _querySelectorAll(self: *parser.Document, alloc: std.mem.Allocator, selectors: []const u8) !NodeList {
var list = try NodeList.init();
errdefer list.deinit(alloc);
if (selectors.len == 0) return list;

View File

@@ -229,8 +229,8 @@ pub const Element = struct {
// TODO netsurf doesn't handle query selectors. We have to implement a
// solution by ourselves.
// We handle only * and single id selector like `#foo`.
pub fn _querySelectorAll(self: *parser.Element, alloc: std.mem.Allocator, selectors: []const u8) !*NodeList {
const list = try NodeList.init(alloc);
pub fn _querySelectorAll(self: *parser.Element, alloc: std.mem.Allocator, selectors: []const u8) !NodeList {
var list = try NodeList.init();
errdefer list.deinit(alloc);
if (selectors.len == 0) return list;

View File

@@ -194,8 +194,8 @@ pub const Node = struct {
return try parser.nodeHasChildNodes(self);
}
pub fn get_childNodes(self: *parser.Node, alloc: std.mem.Allocator) !*NodeList {
const list = try NodeList.init(alloc);
pub fn get_childNodes(self: *parser.Node, alloc: std.mem.Allocator) !NodeList {
var list = try NodeList.init();
errdefer list.deinit(alloc);
var n = try parser.nodeFirstChild(self) orelse return list;

View File

@@ -22,19 +22,15 @@ pub const NodeList = struct {
nodes: NodesArrayList,
pub fn init(alloc: std.mem.Allocator) !*NodeList {
const list = try alloc.create(NodeList);
list.* = NodeList{
pub fn init() !NodeList {
return NodeList{
.nodes = NodesArrayList{},
};
return list;
}
pub fn deinit(self: *NodeList, alloc: std.mem.Allocator) void {
// TODO unref all nodes
self.nodes.deinit(alloc);
alloc.destroy(self);
}
pub fn append(self: *NodeList, alloc: std.mem.Allocator, node: *parser.Node) !void {