diff --git a/src/OneSmallerInt.zig b/src/OneSmallerInt.zig new file mode 100644 index 0000000000000000000000000000000000000000..2e60a0f6afc4489641d42d068b3e573707d51139 --- /dev/null +++ b/src/OneSmallerInt.zig @@ -0,0 +1,40 @@ +const std = @import("std"); +const string = []const u8; +const extras = @import("./lib.zig"); + +pub fn OneSmallerInt(comptime T: type) type { + var info = @typeInfo(T); + info.Int.bits -= 1; + return @Type(info); +} + +test { + try std.testing.expect(OneSmallerInt(u1) == u0); +} +test { + try std.testing.expect(OneSmallerInt(u2) == u1); +} +test { + try std.testing.expect(OneSmallerInt(u3) == u2); +} +test { + try std.testing.expect(OneSmallerInt(u4) == u3); +} +test { + try std.testing.expect(OneSmallerInt(u5) == u4); +} +test { + try std.testing.expect(OneSmallerInt(i1) == i0); +} +test { + try std.testing.expect(OneSmallerInt(i2) == i1); +} +test { + try std.testing.expect(OneSmallerInt(i3) == i2); +} +test { + try std.testing.expect(OneSmallerInt(i4) == i3); +} +test { + try std.testing.expect(OneSmallerInt(i5) == i4); +} diff --git a/src/lib.zig b/src/lib.zig index 3f0ed08ed25aae1e4a309501f7af12559fa59279..94d181a47d0fd80e64d211fd29b3c59c045f6a05 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -93,3 +93,4 @@ pub usingnamespace @import("./rawInt.zig"); pub usingnamespace @import("./expectSimilarType.zig"); pub usingnamespace @import("./rawIntBytes.zig"); pub usingnamespace @import("./globalOption.zig"); +pub usingnamespace @import("./OneSmallerInt.zig");