authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-10-31 10:44:05-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-10-31 10:44:05-04:00
log0f3e7387bf5389440e8e394d512265e4688f323d
tree9d01674be154c1b8fb218f6d787640022377f2a0
parentb04c6cee60814655fc5356879aa4b0d002e94791
signature Commit is signed but in an unrecognized format.

cleanups


1 files changed, 24 insertions(+), 22 deletions(-)

std/atomic/queue.zig+24-22
...@@ -105,28 +105,30 @@ pub fn Queue(comptime T: type) type {...@@ -105,28 +105,30 @@ pub fn Queue(comptime T: type) type {
105 pub fn dump(self: *Self) void {105 pub fn dump(self: *Self) void {
106 var stderr_file = std.io.getStdErr() catch return;106 var stderr_file = std.io.getStdErr() catch return;
107 const stderr = &stderr_file.outStream().stream;107 const stderr = &stderr_file.outStream().stream;
108 const Error = @typeInfo(@typeOf(stderr)).Pointer.child.Error;
108109
109 self.dumpToStream(stderr) catch return;110 self.dumpToStream(Error, stderr) catch return;
110 }111 }
111112
112 pub fn dumpToStream(self: *Self, stream: var) @typeOf(stream).Error!void {113 pub fn dumpToStream(self: *Self, comptime Error: type, stream: *std.io.OutStream(Error)) Error!void {
114 const S = struct.{
115 fn dumpRecursive(s: *std.io.OutStream(Error), optional_node: ?*Node, indent: usize) Error!void {
116 try s.writeByteNTimes(' ', indent);
117 if (optional_node) |node| {
118 try s.print("0x{x}={}\n", @ptrToInt(node), node.data);
119 try dumpRecursive(s, node.next, indent + 1);
120 } else {
121 try s.print("(null)\n");
122 }
123 }
124 };
113 const held = self.mutex.acquire();125 const held = self.mutex.acquire();
114 defer held.release();126 defer held.release();
115127
116 try stream.print("head: ");128 try stream.print("head: ");
117 try dumpRecursive(stream, self.head, 0);129 try S.dumpRecursive(stream, self.head, 0);
118 try stream.print("tail: ");130 try stream.print("tail: ");
119 try dumpRecursive(stream, self.tail, 0);131 try S.dumpRecursive(stream, self.tail, 0);
120 }
121
122 fn dumpRecursive(stream: var, optional_node: ?*Node, indent: usize) error!void {
123 try stream.writeByteNTimes(' ', indent);
124 if (optional_node) |node| {
125 try stream.print("0x{x}={}\n", @ptrToInt(node), node.data);
126 try dumpRecursive(stream, node.next, indent + 1);
127 } else {
128 try stream.print("(null)\n");
129 }
130 }132 }
131 };133 };
132}134}
...@@ -291,15 +293,15 @@ test "std.atomic.Queue dump" {...@@ -291,15 +293,15 @@ test "std.atomic.Queue dump" {
291293
292 // Test empty stream294 // Test empty stream
293 sos.reset();295 sos.reset();
294 try queue.dumpToStream(&sos.stream);296 try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
295 assert(mem.eql(u8, buffer[0..sos.pos],297 assert(mem.eql(u8, buffer[0..sos.pos],
296 \\head: (null)298 \\head: (null)
297 \\tail: (null)299 \\tail: (null)
298 \\300 \\
299 ));301 ));
300302
301 // Test a stream with one element303 // Test a stream with one element
302 var node_0 = Queue(i32).Node {304 var node_0 = Queue(i32).Node.{
303 .data = 1,305 .data = 1,
304 .next = undefined,306 .next = undefined,
305 .prev = undefined,307 .prev = undefined,
...@@ -307,7 +309,7 @@ test "std.atomic.Queue dump" {...@@ -307,7 +309,7 @@ test "std.atomic.Queue dump" {
307 queue.put(&node_0);309 queue.put(&node_0);
308310
309 sos.reset();311 sos.reset();
310 try queue.dumpToStream(&sos.stream);312 try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
311313
312 var expected = try std.fmt.bufPrint(expected_buffer[0..],314 var expected = try std.fmt.bufPrint(expected_buffer[0..],
313 \\head: 0x{x}=1315 \\head: 0x{x}=1
...@@ -315,11 +317,11 @@ test "std.atomic.Queue dump" {...@@ -315,11 +317,11 @@ test "std.atomic.Queue dump" {
315 \\tail: 0x{x}=1317 \\tail: 0x{x}=1
316 \\ (null)318 \\ (null)
317 \\319 \\
318 , @ptrToInt(queue.head), @ptrToInt(queue.tail));320 , @ptrToInt(queue.head), @ptrToInt(queue.tail));
319 assert(mem.eql(u8, buffer[0..sos.pos], expected));321 assert(mem.eql(u8, buffer[0..sos.pos], expected));
320322
321 // Test a stream with two elements323 // Test a stream with two elements
322 var node_1 = Queue(i32).Node {324 var node_1 = Queue(i32).Node.{
323 .data = 2,325 .data = 2,
324 .next = undefined,326 .next = undefined,
325 .prev = undefined,327 .prev = undefined,
...@@ -327,7 +329,7 @@ test "std.atomic.Queue dump" {...@@ -327,7 +329,7 @@ test "std.atomic.Queue dump" {
327 queue.put(&node_1);329 queue.put(&node_1);
328330
329 sos.reset();331 sos.reset();
330 try queue.dumpToStream(&sos.stream);332 try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
331333
332 expected = try std.fmt.bufPrint(expected_buffer[0..],334 expected = try std.fmt.bufPrint(expected_buffer[0..],
333 \\head: 0x{x}=1335 \\head: 0x{x}=1
...@@ -336,6 +338,6 @@ test "std.atomic.Queue dump" {...@@ -336,6 +338,6 @@ test "std.atomic.Queue dump" {
336 \\tail: 0x{x}=2338 \\tail: 0x{x}=2
337 \\ (null)339 \\ (null)
338 \\340 \\
339 , @ptrToInt(queue.head), @ptrToInt(queue.head.?.next), @ptrToInt(queue.tail));341 , @ptrToInt(queue.head), @ptrToInt(queue.head.?.next), @ptrToInt(queue.tail));
340 assert(mem.eql(u8, buffer[0..sos.pos], expected));342 assert(mem.eql(u8, buffer[0..sos.pos], expected));
341}343}