@@ -12,6 +12,7 @@ pub fn SegmentList(Segment: type) type {
12
12
return struct {
13
13
pub const Self = @This ();
14
14
pub const List = std .DoublyLinkedList (Segment );
15
+ pub const Node = List .Node ;
15
16
16
17
pub const MergePolicy = TieredMergePolicy (Segment );
17
18
@@ -38,29 +39,33 @@ pub fn SegmentList(Segment: type) type {
38
39
39
40
// Creates a new segment and returns a pointer to the list node owning it.
40
41
// 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
+ };
44
49
return node ;
45
50
}
46
51
47
52
// Destroys a segment and frees the memory.
48
53
// 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 {
50
55
node .data .deinit ();
51
56
self .allocator .destroy (node );
52
57
}
53
58
54
- pub fn removeAndDestroySegment (self : * Self , node : * List. Node ) void {
59
+ pub fn removeAndDestroySegment (self : * Self , node : * Node ) void {
55
60
self .segments .remove (node );
56
61
self .destroySegment (node );
57
62
}
58
63
59
- pub fn appendSegment (self : * Self , node : * List. Node ) void {
64
+ pub fn appendSegment (self : * Self , node : * Node ) void {
60
65
self .segments .append (node );
61
66
}
62
67
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 ) {
64
69
var ids = std .ArrayList (common .SegmentID ).init (allocator );
65
70
errdefer ids .deinit ();
66
71
@@ -145,7 +150,7 @@ pub fn SegmentList(Segment: type) type {
145
150
146
151
pub const PreparedMerge = struct {
147
152
sources : SegmentsToMerge ,
148
- target : * List. Node ,
153
+ target : * Node ,
149
154
merger : SegmentMerger (Segment ),
150
155
};
151
156
0 commit comments