|
7 | 7 | //! - `writeStringPrefix`, `writeString` |
8 | 8 | //! - `writeBinaryPrefix`, `writeBinary` |
9 | 9 | //! - `writeExtPrefix`, `writeExt` |
10 | | -//! - `writeBool`, `writeNil` |
11 | | -//! - `writeInt`, `writeIntSm`, `writeFloat` |
12 | 10 | //! - `writeArrayPrefix`, `writeMapPrefix` |
13 | 11 | const fmt = @import("./root.zig"); |
14 | 12 | const std = @import("std"); |
@@ -51,61 +49,6 @@ pub fn writeExt(writer: anytype, extype: i8, payload: []const u8) !usize { |
51 | 49 | return size1 + size2; |
52 | 50 | } |
53 | 51 |
|
54 | | -pub fn writeBool(writer: anytype, value: bool) !usize { |
55 | | - var buf = [_]u8{0}; |
56 | | - _ = fmt.writeBool(&buf, value); |
57 | | - return try writer.write(&buf); |
58 | | -} |
59 | | - |
60 | | -pub fn writeNil(writer: anytype) !usize { |
61 | | - var buf = [_]u8{0}; |
62 | | - _ = fmt.writeNil(&buf); |
63 | | - return try writer.write(&buf); |
64 | | -} |
65 | | - |
66 | | -fn BufferForNumber(comptime T: type) type { |
67 | | - const bsize = switch (@bitSizeOf(T)) { |
68 | | - 1...8 => 1, |
69 | | - 9...16 => 2, |
70 | | - 17...32 => 4, |
71 | | - 33...64 => 8, |
72 | | - else => @compileError(comptimePrint("unsupported {}", .{@typeName(T)})), |
73 | | - }; |
74 | | - return [bsize + 1]u8; |
75 | | -} |
76 | | - |
77 | | -pub fn writeInt(writer: anytype, value: anytype) !usize { |
78 | | - const T = @TypeOf(value); |
79 | | - var buf: BufferForNumber(T) = undefined; |
80 | | - const bsize = fmt.writeInt(T, &buf, value); |
81 | | - const wsize = try writer.write(buf[0..bsize]); |
82 | | - return wsize; |
83 | | -} |
84 | | - |
85 | | -pub fn writeIntSm(writer: anytype, value: anytype) !usize { |
86 | | - var buf: BufferForNumber(@TypeOf(value)) = undefined; |
87 | | - // std.debug.print("writeIntSm value={} buf.len={}\n", .{ value, buf.len }); |
88 | | - const bsize = fmt.writeIntSm(@TypeOf(value), &buf, value); |
89 | | - const wsize = try writer.write(buf[0..bsize]); |
90 | | - return wsize; |
91 | | -} |
92 | | - |
93 | | -pub fn writeFloat(writer: anytype, value: anytype) !usize { |
94 | | - const T = @TypeOf(value); |
95 | | - var buf: BufferForNumber(@TypeOf(value)) = undefined; |
96 | | - const bsize = fmt.writeFloat(T, &buf, value); |
97 | | - const wsize = try writer.write(buf[0..bsize]); |
98 | | - return wsize; |
99 | | -} |
100 | | - |
101 | | -pub fn writeFloatSm(writer: anytype, value: anytype) !usize { |
102 | | - const T = @TypeOf(value); |
103 | | - var buf: BufferForNumber(@TypeOf(value)) = undefined; |
104 | | - const bsize = fmt.writeFloatSm(T, &buf, value); |
105 | | - const wsize = try writer.write(buf[0..bsize]); |
106 | | - return wsize; |
107 | | -} |
108 | | - |
109 | 52 | pub fn writeArrayPrefix(writer: anytype, length: u32) !usize { |
110 | 53 | const prefix = fmt.prefixArray(length); |
111 | 54 | const slice = prefix.constSlice(); |
@@ -138,6 +81,9 @@ pub const UnpackReader = struct { |
138 | 81 | buffer: []u8, |
139 | 82 | readsize: usize = 0, |
140 | 83 |
|
| 84 | + /// Recommended min buffer size. |
| 85 | + pub const RECOMMENDED_BUFFER_SIZE = std.mem.page_size; |
| 86 | + |
141 | 87 | pub fn init(buffer: []u8) UnpackReader { |
142 | 88 | std.debug.assert(buffer.len >= 8); |
143 | 89 | return .{ |
|
0 commit comments