| 1 | /* @title: Static Assertions & Compile-Time Checks */ |
| 2 | #pragma once |
| 3 | #include <compiler/core.h> |
| 4 | #include <stddef.h> |
| 5 | #include <stdint.h> |
| 6 | |
| 7 | #define static_assert_size(type, expected_size) \ |
| 8 | ct_assert_size(type, expected_size) |
| 9 | #define static_assert_align(type, expected_align) \ |
| 10 | ct_assert_align(type, expected_align) |
| 11 | #define static_assert_offset(type, member, expected_offset) \ |
| 12 | ct_assert_offset(type, member, expected_offset) |
| 13 | |
| 14 | #define ct_assert_disjoint_masks(mask1, mask2) \ |
| 15 | static_assert(((mask1) & (mask2)) == 0, \ |
| 16 | "masks " #mask1 " and " #mask2 " overlap") |
| 17 | |
| 18 | #define static_assert_disjoint_masks(mask1, mask2) \ |
| 19 | ct_assert_disjoint_masks(mask1, mask2) |
| 20 | |