diff --git a/src/FlippedInt.zig b/src/FlippedInt.zig new file mode 100644 index 0000000000000000000000000000000000000000..9932f8dd948736a5ee20b257a4b8bdad124e8493 --- /dev/null +++ b/src/FlippedInt.zig @@ -0,0 +1,43 @@ +const std = @import("std"); +const string = []const u8; +const extras = @import("./lib.zig"); + +pub fn FlippedInt(comptime T: type) type { + var info = @typeInfo(T); + info.Int.signedness = switch (info.Int.signedness) { + .signed => .unsigned, + .unsigned => .signed, + }; + return @Type(info); +} + +test { + try std.testing.expect(FlippedInt(u1) == i1); +} +test { + try std.testing.expect(FlippedInt(u2) == i2); +} +test { + try std.testing.expect(FlippedInt(u3) == i3); +} +test { + try std.testing.expect(FlippedInt(u4) == i4); +} +test { + try std.testing.expect(FlippedInt(u5) == i5); +} +test { + try std.testing.expect(FlippedInt(i1) == u0); +} +test { + try std.testing.expect(FlippedInt(i2) == u1); +} +test { + try std.testing.expect(FlippedInt(i3) == u2); +} +test { + try std.testing.expect(FlippedInt(i4) == u3); +} +test { + try std.testing.expect(FlippedInt(i5) == u4); +} diff --git a/src/lib.zig b/src/lib.zig index 94d181a47d0fd80e64d211fd29b3c59c045f6a05..9d43d4031f233debd7e190c505ec0b88175ab16e 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -94,3 +94,4 @@ pub usingnamespace @import("./expectSimilarType.zig"); pub usingnamespace @import("./rawIntBytes.zig"); pub usingnamespace @import("./globalOption.zig"); pub usingnamespace @import("./OneSmallerInt.zig"); +pub usingnamespace @import("./FlippedInt.zig");