memscope_rs/core/tracker/
global_functions.rs1use super::tracking_manager::TrackingManager;
7use crate::core::types::TrackingResult;
8
9pub fn get_tracking_manager() -> TrackingManager {
11 TrackingManager::new()
12}
13
14pub fn track_allocation(ptr: usize, size: usize) -> TrackingResult<()> {
16 let manager = TrackingManager::new();
17 manager.track_allocation(ptr, size)
18}
19
20pub fn track_deallocation(ptr: usize) -> TrackingResult<()> {
22 let manager = TrackingManager::new();
23 manager.track_deallocation(ptr)
24}
25
26pub fn associate_var(ptr: usize, var_name: String, type_name: String) -> TrackingResult<()> {
28 let manager = TrackingManager::new();
29 manager.associate_var(ptr, var_name, type_name)
30}
31
32pub fn enter_scope(name: String) -> TrackingResult<crate::core::scope_tracker::ScopeId> {
34 let manager = TrackingManager::new();
35 manager.enter_scope(name)
36}
37
38pub fn exit_scope(scope_id: crate::core::scope_tracker::ScopeId) -> TrackingResult<()> {
40 let manager = TrackingManager::new();
41 manager.exit_scope(scope_id)
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
53 fn test_function_signatures_exist() {
54 let _f1: fn() -> TrackingManager = get_tracking_manager;
59 let _f2: fn(usize, usize) -> TrackingResult<()> = track_allocation;
60 let _f3: fn(usize) -> TrackingResult<()> = track_deallocation;
61 let _f4: fn(usize, String, String) -> TrackingResult<()> = associate_var;
62 let _f5: fn(String) -> TrackingResult<crate::core::scope_tracker::ScopeId> = enter_scope;
63 let _f6: fn(crate::core::scope_tracker::ScopeId) -> TrackingResult<()> = exit_scope;
64
65 }
67
68 #[test]
69 fn test_get_tracking_manager_function_exists() {
70 let _f: fn() -> TrackingManager = get_tracking_manager;
72 }
73
74 #[test]
75 fn test_track_allocation_function_exists() {
76 let _f: fn(usize, usize) -> TrackingResult<()> = track_allocation;
78 }
79
80 #[test]
81 fn test_track_deallocation_function_exists() {
82 let _f: fn(usize) -> TrackingResult<()> = track_deallocation;
84 }
85
86 #[test]
87 fn test_associate_var_function_exists() {
88 let _f: fn(usize, String, String) -> TrackingResult<()> = associate_var;
90 }
91
92 #[test]
93 fn test_enter_scope_function_exists() {
94 let _f: fn(String) -> TrackingResult<crate::core::scope_tracker::ScopeId> = enter_scope;
96 }
97
98 #[test]
99 fn test_exit_scope_function_exists() {
100 let _f: fn(crate::core::scope_tracker::ScopeId) -> TrackingResult<()> = exit_scope;
102 }
103
104 #[test]
105 fn test_module_documentation() {
106 }
109
110 #[test]
111 fn test_function_parameter_types() {
112 let _ptr: usize = 0x1000;
117 let _size: usize = 64;
118 let _f1: fn(usize, usize) -> TrackingResult<()> = track_allocation;
119
120 let _ptr: usize = 0x2000;
122 let _f2: fn(usize) -> TrackingResult<()> = track_deallocation;
123
124 let _ptr: usize = 0x3000;
126 let _var_name: String = "test".to_string();
127 let _type_name: String = "i32".to_string();
128 let _f3: fn(usize, String, String) -> TrackingResult<()> = associate_var;
129
130 let _scope_name: String = "test_scope".to_string();
132 let _f4: fn(String) -> TrackingResult<crate::core::scope_tracker::ScopeId> = enter_scope;
133 let _f5: fn(crate::core::scope_tracker::ScopeId) -> TrackingResult<()> = exit_scope;
134 }
135
136 #[test]
137 fn test_return_types() {
138 use std::marker::PhantomData;
142
143 let _phantom: PhantomData<TrackingManager> = PhantomData;
145
146 let _phantom: PhantomData<TrackingResult<()>> = PhantomData;
148
149 let _phantom: PhantomData<crate::core::scope_tracker::ScopeId> = PhantomData;
151 }
152}