diff --git a/src/lib.zig b/src/lib.zig index 5c71e320c7fd608d15d8a74a430ace1195e070ed..85c0f98f45a22986d5aeaf3283c28745883d4c07 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -414,3 +414,11 @@ pub fn skipToBoundary(pos: u64, boundary: u64, reader: anytype) !void { pub fn is(a: anytype, b: @TypeOf(a)) bool { return a == b; } + +/// Allows u32 + i16 to work +pub fn safeAdd(a: anytype, b: anytype) @TypeOf(a) { + if (b >= 0) { + return a + @intCast(@TypeOf(a), b); + } + return a - @intCast(@TypeOf(a), -b); +}