From 69ad3ce3ec5ccc9701caaafbcb408be2e573b126 Mon Sep 17 00:00:00 2001 From: Ben Frankel Date: Sun, 5 Sep 2021 20:40:51 -0700 Subject: [PATCH] Add span! macro --- tracy-client/src/lib.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tracy-client/src/lib.rs b/tracy-client/src/lib.rs index fc779c8..f6066f5 100644 --- a/tracy-client/src/lib.rs +++ b/tracy-client/src/lib.rs @@ -19,6 +19,27 @@ use std::alloc; use std::ffi::CString; use tracy_client_sys as sys; +/// Start a new Tracy span with function, file, and line determined automatically. +#[macro_export] +macro_rules! span { + ($name:expr, $callstack_depth:expr) => {{ + fn f() {} + fn type_name_of(_: T) -> &'static str { + std::any::type_name::() + } + let func_name = type_name_of(f); + let function = &func_name[..func_name.len() - 3]; + + tracy_client::Span::new( + $name, + function, + file!(), + line!(), + $callstack_depth, + ) + }}; +} + /// A handle representing a span of execution. #[cfg(feature="enable")] pub struct Span(