Commit 6e821078f6

Andrew Kelley <superjoe30@gmail.com>
2018-05-11 20:08:16
update std.Buffer API
* remove Buffer.appendFormat * remove Buffer.appendByte * remove Buffer.appendByteNTimes Added test to demo what to use instead of the above functions
1 parent efa39c5
Changed files (2)
std/buffer.zig
@@ -99,26 +99,10 @@ pub const Buffer = struct {
         mem.copy(u8, self.list.toSlice()[old_len..], m);
     }
 
-    // TODO: remove, use OutStream for this
-    pub fn appendFormat(self: &Buffer, comptime format: []const u8, args: ...) !void {
-        return fmt.format(self, append, format, args);
-    }
-
-    // TODO: remove, use OutStream for this
     pub fn appendByte(self: &Buffer, byte: u8) !void {
-        return self.appendByteNTimes(byte, 1);
-    }
-
-    // TODO: remove, use OutStream for this
-    pub fn appendByteNTimes(self: &Buffer, byte: u8, count: usize) !void {
-        var prev_size: usize = self.len();
-        const new_size = prev_size + count;
-        try self.resize(new_size);
-
-        var i: usize = prev_size;
-        while (i < new_size) : (i += 1) {
-            self.list.items[i] = byte;
-        }
+        const old_len = self.len();
+        try self.resize(old_len + 1);
+        self.list.toSlice()[old_len] = byte;
     }
 
     pub fn eql(self: &const Buffer, m: []const u8) bool {
@@ -154,7 +138,7 @@ test "simple Buffer" {
     var buf = try Buffer.init(debug.global_allocator, "");
     assert(buf.len() == 0);
     try buf.append("hello");
-    try buf.appendByte(' ');
+    try buf.append(" ");
     try buf.append("world");
     assert(buf.eql("hello world"));
     assert(mem.eql(u8, cstr.toSliceConst(buf.toSliceConst().ptr), buf.toSliceConst()));
std/io_test.zig
@@ -1,6 +1,5 @@
 const std = @import("index.zig");
 const io = std.io;
-const allocator = std.debug.global_allocator;
 const DefaultPrng = std.rand.DefaultPrng;
 const assert = std.debug.assert;
 const mem = std.mem;
@@ -8,6 +7,9 @@ const os = std.os;
 const builtin = @import("builtin");
 
 test "write a file, read it, then delete it" {
+    var raw_bytes: [200 * 1024]u8 = undefined;
+    var allocator = &std.heap.FixedBufferAllocator.init(raw_bytes[0..]).allocator;
+
     var data: [1024]u8 = undefined;
     var prng = DefaultPrng.init(1234);
     prng.random.bytes(data[0..]);
@@ -44,3 +46,17 @@ test "write a file, read it, then delete it" {
     }
     try os.deleteFile(allocator, tmp_file_name);
 }
+
+test "BufferOutStream" {
+    var bytes: [100]u8 = undefined;
+    var allocator = &std.heap.FixedBufferAllocator.init(bytes[0..]).allocator;
+
+    var buffer = try std.Buffer.initSize(allocator, 0);
+    var buf_stream = &std.io.BufferOutStream.init(&buffer).stream;
+
+    const x: i32 = 42;
+    const y: i32 = 1234;
+    try buf_stream.print("x: {}\ny: {}\n", x, y);
+
+    assert(mem.eql(u8, buffer.toSlice(), "x: 42\ny: 1234\n"));
+}