cvlr_asserts/
log.rs

1mod rt_decls {
2    extern "C" {
3        #![allow(improper_ctypes)]
4        // duplicated to avoid cvlr-assert depend on any other cvlr crate
5        pub fn CVT_calltrace_attach_location(file: &str, line: u64);
6    }
7}
8
9#[inline(always)]
10pub fn add_loc(file: &str, line: u32) {
11    unsafe {
12        rt_decls::CVT_calltrace_attach_location(file, line as u64);
13    }
14}
15
16#[cfg(not(feature = "no-loc"))]
17#[macro_export]
18macro_rules! cvlr_asserts_core_file {
19    () => {
20        ::core::file!()
21    };
22}
23
24#[cfg(not(feature = "no-loc"))]
25#[macro_export]
26macro_rules! cvlr_asserts_core_line {
27    () => {
28        ::core::line!()
29    };
30}
31
32#[cfg(feature = "no-loc")]
33#[macro_export]
34macro_rules! cvlr_asserts_core_file {
35    () => {
36        "<FILE>"
37    };
38}
39
40#[cfg(feature = "no-loc")]
41#[macro_export]
42macro_rules! cvlr_asserts_core_line {
43    () => {
44        0u32
45    };
46}
47
48#[macro_export]
49macro_rules! add_loc {
50    () => {
51        $crate::log::add_loc(
52            $crate::cvlr_asserts_core_file!(),
53            $crate::cvlr_asserts_core_line!(),
54        );
55    };
56}