Skip to content

Commit 6afd66d

Browse files
committed
.
1 parent 09aefac commit 6afd66d

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

src/Index.zig

+5-4
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,17 @@ const SearchResults = @import("common.zig").SearchResults;
1010
const SegmentID = @import("common.zig").SegmentID;
1111

1212
const SegmentMergeOptions = @import("segment_list.zig").SegmentMergeOptions;
13+
const SegmentList = @import("segment_list.zig").SegmentList;
1314

1415
const Oplog = @import("Oplog.zig");
1516

1617
const MemorySegment = @import("MemorySegment.zig");
17-
const MemorySegmentList = MemorySegment.List;
18-
const MemorySegmentNode = MemorySegment.List.List.Node;
18+
const MemorySegmentList = SegmentList(MemorySegment);
19+
const MemorySegmentNode = MemorySegmentList.Node;
1920

2021
const FileSegment = @import("FileSegment.zig");
21-
const FileSegmentList = FileSegment.List;
22-
const FileSegmentNode = FileSegment.List.List.Node;
22+
const FileSegmentList = SegmentList(FileSegment);
23+
const FileSegmentNode = FileSegmentList.Node;
2324

2425
const SegmentMerger = @import("segment_merger.zig").SegmentMerger;
2526

src/segment_list.zig

+13-8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ pub fn SegmentList(Segment: type) type {
1212
return struct {
1313
pub const Self = @This();
1414
pub const List = std.DoublyLinkedList(Segment);
15+
pub const Node = List.Node;
1516

1617
pub const MergePolicy = TieredMergePolicy(Segment);
1718

@@ -38,29 +39,33 @@ pub fn SegmentList(Segment: type) type {
3839

3940
// Creates a new segment and returns a pointer to the list node owning it.
4041
// This function is safe to call from any thread.
41-
pub fn createSegment(self: *Self) !*List.Node {
42-
const node = try self.allocator.create(List.Node);
43-
node.data = Segment.init(self.allocator);
42+
pub fn createSegment(self: *Self) !*Node {
43+
const node = try self.allocator.create(Node);
44+
node.* = .{
45+
.data = Segment.init(self.allocator),
46+
.next = null,
47+
.prev = null,
48+
};
4449
return node;
4550
}
4651

4752
// Destroys a segment and frees the memory.
4853
// This function is safe to call from any thread, but only if the segment is not in the list.
49-
pub fn destroySegment(self: *Self, node: *List.Node) void {
54+
pub fn destroySegment(self: *Self, node: *Node) void {
5055
node.data.deinit();
5156
self.allocator.destroy(node);
5257
}
5358

54-
pub fn removeAndDestroySegment(self: *Self, node: *List.Node) void {
59+
pub fn removeAndDestroySegment(self: *Self, node: *Node) void {
5560
self.segments.remove(node);
5661
self.destroySegment(node);
5762
}
5863

59-
pub fn appendSegment(self: *Self, node: *List.Node) void {
64+
pub fn appendSegment(self: *Self, node: *Node) void {
6065
self.segments.append(node);
6166
}
6267

63-
pub fn getIdsAfterAppend(self: *Self, new_segment: *List.Node, allocator: std.mem.Allocator) !std.ArrayList(common.SegmentID) {
68+
pub fn getIdsAfterAppend(self: *Self, new_segment: *Node, allocator: std.mem.Allocator) !std.ArrayList(common.SegmentID) {
6469
var ids = std.ArrayList(common.SegmentID).init(allocator);
6570
errdefer ids.deinit();
6671

@@ -145,7 +150,7 @@ pub fn SegmentList(Segment: type) type {
145150

146151
pub const PreparedMerge = struct {
147152
sources: SegmentsToMerge,
148-
target: *List.Node,
153+
target: *Node,
149154
merger: SegmentMerger(Segment),
150155
};
151156

0 commit comments

Comments
 (0)