| 1 | const assert = @import("std").debug.assert; |
| 2 | const testing = @import("std").testing; |
| 3 | |
| 4 | const updateHidden = @extern(*const fn (u32) callconv(.c) void, .{ .name = "updateHidden" }); |
| 5 | const getHidden = @extern(*const fn () callconv(.c) u32, .{ .name = "getHidden" }); |
| 6 | |
| 7 | const T = extern struct { x: u32 }; |
| 8 | |
| 9 | test { |
| 10 | const mut_val_ptr = @extern(*f64, .{ .name = "mut_val" }); |
| 11 | const const_val_ptr = @extern(*const T, .{ .name = "const_val" }); |
| 12 | const shared_val_ptr = @extern(*c_int, .{ .name = "shared_val", .is_dll_import = true }); |
| 13 | |
| 14 | assert(getHidden() == 0); |
| 15 | updateHidden(123); |
| 16 | assert(getHidden() == 123); |
| 17 | assert(mut_val_ptr.* == 1.23); |
| 18 | mut_val_ptr.* = 10.0; |
| 19 | assert(mut_val_ptr.* == 10.0); |
| 20 | |
| 21 | assert(const_val_ptr.x == 42); |
| 22 | |
| 23 | assert(shared_val_ptr.* == 1234); |
| 24 | shared_val_ptr.* = 1235; |
| 25 | assert(shared_val_ptr.* == 1235); |
| 26 | } |