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