1mod rt_decls {
2 extern "C" {
3 #![allow(improper_ctypes)]
4 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}