1
0
Fork 0
QuasselClient/src/qtshit/read/readQStringList.zig
2021-06-04 15:13:02 +01:00

33 lines
1.2 KiB
Zig

const std = @import("std");
const range = @import("../utils/RangeIter.zig").range;
const readUInt = @import("./readUInt.zig").readUInt;
const readString = @import("./readString.zig").readString;
const freeQStringList = @import("../utils/free/freeQStringList.zig").freeQStringList;
pub fn readQStringList(reader: anytype, allocator: *std.mem.Allocator) ![][]const u8 {
var length = try readUInt(reader);
//std.debug.print("read: readQStringList length={d} \n", .{length});
var stringList = try allocator.alloc([]const u8, @intCast(usize, length));
var iter = range(u32, 0, length);
while (iter.next()) |i| {
stringList[i] = try readString(reader, allocator);
}
return stringList;
}
test "deserialize QStringList" {
var bytes = &[_]u8{ 0, 0, 0, 2, 0, 0, 0, 6, 0, 117, 0, 119, 0, 117, 0, 0, 0, 6, 0, 111, 0, 119, 0, 111 };
var fBS = std.io.fixedBufferStream(bytes);
var qstringlist = try readQStringList(fBS.reader(), std.testing.allocator);
defer freeQStringList(qstringlist, std.testing.allocator);
try std.testing.expect(qstringlist.len == 2);
try std.testing.expectEqualStrings(qstringlist[0], "uwu");
try std.testing.expectEqualStrings(qstringlist[1], "owo");
}