Skip to content

Commit 359f057

Browse files
committed
add type for str, bin, array and map
1 parent b917041 commit 359f057

File tree

5 files changed

+257
-216
lines changed

5 files changed

+257
-216
lines changed

src/ComptimeFloat.zig

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
const std = @import("std");
22
const Float = @import("./root.zig").Float;
33

4-
pub fn countSm(value: comptime_int) usize {
5-
return serializeSm(std.io.null_writer, value) catch unreachable;
4+
pub fn count(value: comptime_int) usize {
5+
return pipe(std.io.null_writer, value) catch unreachable;
66
}
77

8-
pub fn serializeSm(writer: anytype, value: comptime_int) !usize {
8+
pub fn pipe(writer: anytype, value: comptime_int) !usize {
99
const wontLosePrecision = @as(f32, @floatCast(value)) == value;
1010

1111
if (wontLosePrecision) {
12-
return Float(f32).serialize(writer, @floatCast(value));
12+
return Float(f32).pipe(writer, @floatCast(value));
1313
} else {
14-
return Float(f64).serialize(writer, @floatCast(value));
14+
return Float(f64).pipe(writer, @floatCast(value));
1515
}
1616
}
1717

18-
pub fn writeSm(dst: []u8, value: comptime_float) usize {
18+
pub fn write(dst: []u8, value: comptime_float) usize {
1919
var stream = std.io.fixedBufferStream(dst);
20-
return serializeSm(stream.writer(), value) catch unreachable;
20+
return pipe(stream.writer(), value) catch unreachable;
2121
}
22-
23-
pub const count = countSm;
24-
pub const serialize = serializeSm;
25-
pub const write = writeSm;

src/ComptimeInt.zig

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ pub fn count(value: comptime_int) usize {
1616
return 1 + nbytes;
1717
}
1818

19-
pub const countSm = count;
20-
21-
pub fn serialize(writer: anytype, value: comptime_int) !usize {
19+
pub fn pipe(writer: anytype, value: comptime_int) !usize {
2220
const signed: std.builtin.Signedness = if (value < 0) .signed else .unsigned;
2321
const bits = compatstd.meta.bitsOfNumber(value);
2422

@@ -56,7 +54,5 @@ pub fn serialize(writer: anytype, value: comptime_int) !usize {
5654

5755
pub fn write(dst: []u8, value: comptime_int) usize {
5856
var stream = std.io.fixedBufferStream(dst);
59-
return serialize(stream.writer(), value) catch unreachable;
57+
return pipe(stream.writer(), value) catch unreachable;
6058
}
61-
62-
pub const writeSm = write;

src/io.zig

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,6 @@ const comptimePrint = std.fmt.comptimePrint;
1616
const Allocator = std.mem.Allocator;
1717
const ArrayList = std.ArrayList;
1818

19-
pub fn writeStringPrefix(writer: anytype, length: u32) !usize {
20-
const header = fmt.prefixString(length);
21-
return try writer.write(header.constSlice());
22-
}
23-
24-
pub fn writeString(writer: anytype, src: []const u8) !usize {
25-
const size1 = try writeStringPrefix(writer, @intCast(src.len));
26-
const size2 = try writer.write(src);
27-
return size1 + size2;
28-
}
29-
30-
pub fn writeBinaryPrefix(writer: anytype, length: u32) !usize {
31-
const header = fmt.prefixBinary(length);
32-
return try writer.write(header.constSlice());
33-
}
34-
35-
pub fn writeBinary(writer: anytype, src: []const u8) !usize {
36-
const size1 = try writeBinaryPrefix(writer, @intCast(src.len));
37-
const size2 = try writer.write(src);
38-
return size1 + size2;
39-
}
40-
41-
pub fn writeExtPrefix(writer: anytype, length: u32, extype: i8) !usize {
42-
const header = fmt.prefixExt(length, extype);
43-
return try writer.write(header.constSlice());
44-
}
45-
46-
pub fn writeExt(writer: anytype, extype: i8, payload: []const u8) !usize {
47-
const size1 = try writeExtPrefix(writer, @intCast(payload.len), extype);
48-
const size2 = try writer.write(payload);
49-
return size1 + size2;
50-
}
51-
52-
pub fn writeArrayPrefix(writer: anytype, length: u32) !usize {
53-
const prefix = fmt.prefixArray(length);
54-
const slice = prefix.constSlice();
55-
return try writer.write(slice);
56-
}
57-
58-
pub fn writeMapPrefix(writer: anytype, length: u32) !usize {
59-
const prefix = fmt.prefixMap(length);
60-
const slice = prefix.constSlice();
61-
return try writer.write(slice);
62-
}
63-
6419
/// Wrapper to read value from a `std.io.GenericReader`.
6520
///
6621
/// The usage is almost same to the `fmt.Unpack`, but you
@@ -266,7 +221,7 @@ pub const UnpackReader = struct {
266221
const t = std.testing;
267222

268223
var content: std.BoundedArray(u8, fmt.PREFIX_BUFSIZE * 1 + "Hello".len) = .{};
269-
_ = try writeString(content.writer(), "Hello");
224+
_ = try fmt.AnyStr.pipeVal(content.writer(), "Hello");
270225
var stream = std.io.fixedBufferStream(content.constSlice());
271226

272227
var buf: [256]u8 = undefined;
@@ -281,7 +236,7 @@ pub const UnpackReader = struct {
281236
const t = std.testing;
282237

283238
var content: std.BoundedArray(u8, fmt.PREFIX_BUFSIZE * 1 + "Hello".len) = .{};
284-
_ = try writeString(content.writer(), "Hello");
239+
_ = try fmt.AnyStr.pipeVal(content.writer(), "Hello");
285240
var stream = std.io.fixedBufferStream(content.constSlice()[0 .. content.len - 1]);
286241

287242
var buf: [256]u8 = undefined;

src/rewriter.zig

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ fn rewriteValue(
1212
switch (h.type.family()) {
1313
.nil => {
1414
_ = try values.nil(reader, ?*anyopaque, h);
15-
_ = try zigpak.Nil.serialize(writer);
15+
_ = try zigpak.Nil.pipe(writer);
1616
},
17-
.bool => _ = try zigpak.Bool.serialize(writer, try values.bool(reader, h)),
18-
.int => _ = try zigpak.SInt.serializeSm(writer, try values.int(reader, i64, h)),
19-
.uint => _ = try zigpak.UInt.serializeSm(writer, try values.int(reader, u64, h)),
20-
.float => _ = try zigpak.AnyFloat.serializeSm(writer, try values.float(reader, f64, h)),
17+
.bool => _ = try zigpak.Bool.pipe(writer, try values.bool(reader, h)),
18+
.int => _ = try zigpak.SInt.pipeSm(writer, try values.int(reader, i64, h)),
19+
.uint => _ = try zigpak.UInt.pipeSm(writer, try values.int(reader, u64, h)),
20+
.float => _ = try zigpak.AnyFloat.pipeSm(writer, try values.float(reader, f64, h)),
2121
.str => {
2222
var strReader = try values.rawReader(reader, h);
2323
var strbuf: [4096]u8 = undefined;
24-
_ = try zigpak.io.writeStringPrefix(writer, h.size);
24+
_ = try zigpak.AnyStr.pipe(writer, h.size);
2525
while (true) {
2626
const readsize = try strReader.read(&strbuf);
2727
if (readsize == 0) {
@@ -33,7 +33,7 @@ fn rewriteValue(
3333
.bin => {
3434
var strReader = try values.rawReader(reader, h);
3535
var strbuf: [4096]u8 = undefined;
36-
_ = try zigpak.io.writeBinaryPrefix(writer, h.size);
36+
_ = try zigpak.AnyBin.pipe(writer, h.size);
3737
while (true) {
3838
const readsize = try strReader.read(&strbuf);
3939
if (readsize == 0) {
@@ -44,14 +44,14 @@ fn rewriteValue(
4444
},
4545
.array => {
4646
var array = try values.array(h);
47-
_ = try zigpak.io.writeArrayPrefix(writer, array.len);
47+
_ = try zigpak.AnyArray.pipe(writer, array.len);
4848
while (try array.next(reader)) |elementh| {
4949
try rewriteValue(reader, writer, values, elementh);
5050
}
5151
},
5252
.map => {
5353
var map = try values.map(h);
54-
_ = try zigpak.io.writeMapPrefix(writer, map.len);
54+
_ = try zigpak.AnyMap.pipe(writer, map.len);
5555
while (try map.next(reader)) |keyh| {
5656
try rewriteValue(reader, writer, map.reader, keyh);
5757
const valueh = try map.next(reader) orelse return error.InvalidValue;

0 commit comments

Comments
 (0)