summaryrefslogtreecommitdiff
path: root/src/datastruct/intrusive_linked_list.zig
diff options
context:
space:
mode:
authorQwerasd <qwerasd205@users.noreply.github.com>2025-09-28 21:23:01 -0600
committerMitchell Hashimoto <m@mitchellh.com>2025-09-30 07:27:40 -0700
commit4136c469fad7a85260c2e23b8aca7a1a31aff686 (patch)
tree0dbb4b1299efb0326d7de75126bfaf2b622f93ec /src/datastruct/intrusive_linked_list.zig
parentfcea09e413a55c677dca377f716aa9bc6465306b (diff)
datastruct: make trivial linked list ops inline
Supported by benchmarks (vtebench on Apple M3 Max)
Diffstat (limited to 'src/datastruct/intrusive_linked_list.zig')
-rw-r--r--src/datastruct/intrusive_linked_list.zig14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/datastruct/intrusive_linked_list.zig b/src/datastruct/intrusive_linked_list.zig
index 61bf8157c..734b82fff 100644
--- a/src/datastruct/intrusive_linked_list.zig
+++ b/src/datastruct/intrusive_linked_list.zig
@@ -23,7 +23,7 @@ pub fn DoublyLinkedList(comptime T: type) type {
/// Arguments:
/// node: Pointer to a node in the list.
/// new_node: Pointer to the new node to insert.
- pub fn insertAfter(list: *Self, node: *Node, new_node: *Node) void {
+ pub inline fn insertAfter(list: *Self, node: *Node, new_node: *Node) void {
new_node.prev = node;
if (node.next) |next_node| {
// Intermediate node.
@@ -42,7 +42,7 @@ pub fn DoublyLinkedList(comptime T: type) type {
/// Arguments:
/// node: Pointer to a node in the list.
/// new_node: Pointer to the new node to insert.
- pub fn insertBefore(list: *Self, node: *Node, new_node: *Node) void {
+ pub inline fn insertBefore(list: *Self, node: *Node, new_node: *Node) void {
new_node.next = node;
if (node.prev) |prev_node| {
// Intermediate node.
@@ -60,7 +60,7 @@ pub fn DoublyLinkedList(comptime T: type) type {
///
/// Arguments:
/// new_node: Pointer to the new node to insert.
- pub fn append(list: *Self, new_node: *Node) void {
+ pub inline fn append(list: *Self, new_node: *Node) void {
if (list.last) |last| {
// Insert after last.
list.insertAfter(last, new_node);
@@ -74,7 +74,7 @@ pub fn DoublyLinkedList(comptime T: type) type {
///
/// Arguments:
/// new_node: Pointer to the new node to insert.
- pub fn prepend(list: *Self, new_node: *Node) void {
+ pub inline fn prepend(list: *Self, new_node: *Node) void {
if (list.first) |first| {
// Insert before first.
list.insertBefore(first, new_node);
@@ -91,7 +91,7 @@ pub fn DoublyLinkedList(comptime T: type) type {
///
/// Arguments:
/// node: Pointer to the node to be removed.
- pub fn remove(list: *Self, node: *Node) void {
+ pub inline fn remove(list: *Self, node: *Node) void {
if (node.prev) |prev_node| {
// Intermediate node.
prev_node.next = node.next;
@@ -113,7 +113,7 @@ pub fn DoublyLinkedList(comptime T: type) type {
///
/// Returns:
/// A pointer to the last node in the list.
- pub fn pop(list: *Self) ?*Node {
+ pub inline fn pop(list: *Self) ?*Node {
const last = list.last orelse return null;
list.remove(last);
return last;
@@ -123,7 +123,7 @@ pub fn DoublyLinkedList(comptime T: type) type {
///
/// Returns:
/// A pointer to the first node in the list.
- pub fn popFirst(list: *Self) ?*Node {
+ pub inline fn popFirst(list: *Self) ?*Node {
const first = list.first orelse return null;
list.remove(first);
return first;