diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-04-11 17:55:25 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-04-13 02:20:32 -0400 |
| commit | f32a5d349d2c359a2a1f627aa70e1a7a6f6330ea (patch) | |
| tree | 05a0fe7de04e6aa91775e954f78dd1a478d7e675 /lib/std/math.zig | |
| parent | ec2888858102035f296c01df5aacbd255c35d06f (diff) | |
| download | zig-f32a5d349d2c359a2a1f627aa70e1a7a6f6330ea.tar.gz zig-f32a5d349d2c359a2a1f627aa70e1a7a6f6330ea.zip | |
std: eradicate u29 and embrace std.mem.Alignment
Diffstat (limited to 'lib/std/math.zig')
| -rw-r--r-- | lib/std/math.zig | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/std/math.zig b/lib/std/math.zig index 78acd4b90c..e7156ccd39 100644 --- a/lib/std/math.zig +++ b/lib/std/math.zig @@ -4,6 +4,7 @@ const float = @import("math/float.zig"); const assert = std.debug.assert; const mem = std.mem; const testing = std.testing; +const Alignment = std.mem.Alignment; /// Euler's number (e) pub const e = 2.71828182845904523536028747135266249775724709369995; @@ -1084,19 +1085,16 @@ test cast { pub const AlignCastError = error{UnalignedMemory}; -fn AlignCastResult(comptime alignment: u29, comptime Ptr: type) type { +fn AlignCastResult(comptime alignment: Alignment, comptime Ptr: type) type { var ptr_info = @typeInfo(Ptr); - ptr_info.pointer.alignment = alignment; + ptr_info.pointer.alignment = alignment.toByteUnits(); return @Type(ptr_info); } /// Align cast a pointer but return an error if it's the wrong alignment -pub fn alignCast(comptime alignment: u29, ptr: anytype) AlignCastError!AlignCastResult(alignment, @TypeOf(ptr)) { - const addr = @intFromPtr(ptr); - if (addr % alignment != 0) { - return error.UnalignedMemory; - } - return @alignCast(ptr); +pub fn alignCast(comptime alignment: Alignment, ptr: anytype) AlignCastError!AlignCastResult(alignment, @TypeOf(ptr)) { + if (alignment.check(@intFromPtr(ptr))) return @alignCast(ptr); + return error.UnalignedMemory; } /// Asserts `int > 0`. |
