aboutsummaryrefslogtreecommitdiff
path: root/lib/std/math.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-04-11 17:55:25 -0700
committerAndrew Kelley <andrew@ziglang.org>2025-04-13 02:20:32 -0400
commitf32a5d349d2c359a2a1f627aa70e1a7a6f6330ea (patch)
tree05a0fe7de04e6aa91775e954f78dd1a478d7e675 /lib/std/math.zig
parentec2888858102035f296c01df5aacbd255c35d06f (diff)
downloadzig-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.zig14
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`.