master
1const std = @import("std");
2const common = @import("common.zig");
3const builtin = @import("builtin");
4
5comptime {
6 if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) {
7 // Functions specific to musl and wasi-libc.
8 @export(&abs, .{ .name = "abs", .linkage = common.linkage, .visibility = common.visibility });
9 @export(&labs, .{ .name = "labs", .linkage = common.linkage, .visibility = common.visibility });
10 @export(&llabs, .{ .name = "llabs", .linkage = common.linkage, .visibility = common.visibility });
11 }
12}
13
14fn abs(a: c_int) callconv(.c) c_int {
15 return @intCast(@abs(a));
16}
17
18fn labs(a: c_long) callconv(.c) c_long {
19 return @intCast(@abs(a));
20}
21
22fn llabs(a: c_longlong) callconv(.c) c_longlong {
23 return @intCast(@abs(a));
24}
25
26test abs {
27 const val: c_int = -10;
28 try std.testing.expectEqual(10, abs(val));
29}
30
31test labs {
32 const val: c_long = -10;
33 try std.testing.expectEqual(10, labs(val));
34}
35
36test llabs {
37 const val: c_longlong = -10;
38 try std.testing.expectEqual(10, llabs(val));
39}