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
signaturelock-open 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 {
105105 pub fn dump(self: *Self) void {
106106 var stderr_file = std.io.getStdErr() catch return;
107107 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;
110111 }
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 };
113125 const held = self.mutex.acquire();
114126 defer held.release();
115127
116128 try stream.print("head: ");
117 try dumpRecursive(stream, self.head, 0);
129 try S.dumpRecursive(stream, self.head, 0);
118130 try stream.print("tail: ");
119 try 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 }
131 try S.dumpRecursive(stream, self.tail, 0);
130132 }
131133 };
132134}
......@@ -291,15 +293,15 @@ test "std.atomic.Queue dump" {
291293
292294 // Test empty stream
293295 sos.reset();
294 try queue.dumpToStream(&sos.stream);
296 try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
295297 assert(mem.eql(u8, buffer[0..sos.pos],
296298 \\head: (null)
297299 \\tail: (null)
298300 \\
299 ));
301 ));
300302
301303 // Test a stream with one element
302 var node_0 = Queue(i32).Node {
304 var node_0 = Queue(i32).Node.{
303305 .data = 1,
304306 .next = undefined,
305307 .prev = undefined,
......@@ -307,7 +309,7 @@ test "std.atomic.Queue dump" {
307309 queue.put(&node_0);
308310
309311 sos.reset();
310 try queue.dumpToStream(&sos.stream);
312 try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
311313
312314 var expected = try std.fmt.bufPrint(expected_buffer[0..],
313315 \\head: 0x{x}=1
......@@ -315,11 +317,11 @@ test "std.atomic.Queue dump" {
315317 \\tail: 0x{x}=1
316318 \\ (null)
317319 \\
318 , @ptrToInt(queue.head), @ptrToInt(queue.tail));
320 , @ptrToInt(queue.head), @ptrToInt(queue.tail));
319321 assert(mem.eql(u8, buffer[0..sos.pos], expected));
320322
321323 // Test a stream with two elements
322 var node_1 = Queue(i32).Node {
324 var node_1 = Queue(i32).Node.{
323325 .data = 2,
324326 .next = undefined,
325327 .prev = undefined,
......@@ -327,7 +329,7 @@ test "std.atomic.Queue dump" {
327329 queue.put(&node_1);
328330
329331 sos.reset();
330 try queue.dumpToStream(&sos.stream);
332 try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
331333
332334 expected = try std.fmt.bufPrint(expected_buffer[0..],
333335 \\head: 0x{x}=1
......@@ -336,6 +338,6 @@ test "std.atomic.Queue dump" {
336338 \\tail: 0x{x}=2
337339 \\ (null)
338340 \\
339 , @ptrToInt(queue.head), @ptrToInt(queue.head.?.next), @ptrToInt(queue.tail));
341 , @ptrToInt(queue.head), @ptrToInt(queue.head.?.next), @ptrToInt(queue.tail));
340342 assert(mem.eql(u8, buffer[0..sos.pos], expected));
341343}