| ... | @@ -498,25 +498,6 @@ pub fn write(w: *Writer, bytes: []const u8) Error!usize { | ... | @@ -498,25 +498,6 @@ pub fn write(w: *Writer, bytes: []const u8) Error!usize { |
| 498 | return w.vtable.drain(w, &.{bytes}, 1); | 498 | return w.vtable.drain(w, &.{bytes}, 1); |
| 499 | } | 499 | } |
| 500 | | 500 | |
| 501 | /// Asserts `buffer` capacity exceeds `preserve_len`. | | |
| 502 | pub fn writePreserve(w: *Writer, preserve_len: usize, bytes: []const u8) Error!usize { | | |
| 503 | assert(preserve_len <= w.buffer.len); | | |
| 504 | if (w.end + bytes.len <= w.buffer.len) { | | |
| 505 | @branchHint(.likely); | | |
| 506 | @memcpy(w.buffer[w.end..][0..bytes.len], bytes); | | |
| 507 | w.end += bytes.len; | | |
| 508 | return bytes.len; | | |
| 509 | } | | |
| 510 | const temp_end = w.end -| preserve_len; | | |
| 511 | const preserved = w.buffer[temp_end..w.end]; | | |
| 512 | w.end = temp_end; | | |
| 513 | defer w.end += preserved.len; | | |
| 514 | const n = try w.vtable.drain(w, &.{bytes}, 1); | | |
| 515 | assert(w.end <= temp_end + preserved.len); | | |
| 516 | @memmove(w.buffer[w.end..][0..preserved.len], preserved); | | |
| 517 | return n; | | |
| 518 | } | | |
| 519 | | | |
| 520 | /// Calls `drain` as many times as necessary such that all of `bytes` are | 501 | /// Calls `drain` as many times as necessary such that all of `bytes` are |
| 521 | /// transferred. | 502 | /// transferred. |
| 522 | pub fn writeAll(w: *Writer, bytes: []const u8) Error!void { | 503 | pub fn writeAll(w: *Writer, bytes: []const u8) Error!void { |
| ... | @@ -524,18 +505,6 @@ pub fn writeAll(w: *Writer, bytes: []const u8) Error!void { | ... | @@ -524,18 +505,6 @@ pub fn writeAll(w: *Writer, bytes: []const u8) Error!void { |
| 524 | while (index < bytes.len) index += try w.write(bytes[index..]); | 505 | while (index < bytes.len) index += try w.write(bytes[index..]); |
| 525 | } | 506 | } |
| 526 | | 507 | |
| 527 | /// Calls `drain` as many times as necessary such that all of `bytes` are | | |
| 528 | /// transferred. | | |
| 529 | /// | | |
| 530 | /// When draining the buffer, ensures that at least `preserve_len` bytes | | |
| 531 | /// remain buffered. | | |
| 532 | /// | | |
| 533 | /// Asserts `buffer` capacity exceeds `preserve_len`. | | |
| 534 | pub fn writeAllPreserve(w: *Writer, preserve_len: usize, bytes: []const u8) Error!void { | | |
| 535 | var index: usize = 0; | | |
| 536 | while (index < bytes.len) index += try w.writePreserve(preserve_len, bytes[index..]); | | |
| 537 | } | | |
| 538 | | | |
| 539 | /// Renders fmt string with args, calling `writer` with slices of bytes. | 508 | /// Renders fmt string with args, calling `writer` with slices of bytes. |
| 540 | /// If `writer` returns an error, the error is returned from `format` and | 509 | /// If `writer` returns an error, the error is returned from `format` and |
| 541 | /// `writer` is not called again. | 510 | /// `writer` is not called again. |