libdd_profiling/internal/
location.rs1use super::*;
5
6#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, PartialOrd, Ord)]
12pub struct Location {
13 pub mapping_id: Option<MappingId>,
14 pub function_id: FunctionId,
15 pub address: u64,
16 pub line: i64,
17}
18
19impl Item for Location {
20 type Id = LocationId;
21}
22
23#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, PartialOrd, Ord)]
24#[repr(C)]
25pub struct LocationId(NonZeroU32);
26
27impl Id for LocationId {
28 type RawId = u64;
29
30 fn from_offset(offset: usize) -> Self {
31 #[allow(clippy::expect_used)]
32 Self(small_non_zero_pprof_id(offset).expect("LocationId to fit into a u32"))
33 }
34
35 fn to_raw_id(&self) -> Self::RawId {
36 self.0.get().into()
37 }
38}