use crate::debug::{
BufferDebugProvider, BufferManagerDebugProvider, DataViewDebugProvider, MemoryDebugProvider,
};
use crate::ui::enhanced_tui::EnhancedTuiApp;
use std::sync::Arc;
impl EnhancedTuiApp {
pub fn register_debug_providers(&mut self) {
self.debug_registry.clear();
let memory_provider = Arc::new(MemoryDebugProvider::new(self.memory_tracker.clone()));
self.debug_registry.register(memory_provider);
let buffers: Vec<Arc<dyn crate::buffer::BufferAPI>> = self
.state_container()
.buffers()
.all_buffers()
.iter()
.map(|b| Arc::new(b.clone()) as Arc<dyn crate::buffer::BufferAPI>)
.collect();
let buffer_manager_provider = Arc::new(BufferManagerDebugProvider::new(
buffers,
self.state_container().buffers().current_index(),
));
self.debug_registry.register(buffer_manager_provider);
if let Some(buffer) = self.state_container().buffers().current() {
let buffer_provider = Arc::new(BufferDebugProvider::new(
Arc::new(buffer.clone()) as Arc<dyn crate::buffer::BufferAPI>
));
self.debug_registry.register(buffer_provider);
if let Some(dataview) = buffer.dataview.as_ref() {
let dataview_provider =
Arc::new(DataViewDebugProvider::new(Arc::new(dataview.clone())));
self.debug_registry.register(dataview_provider);
}
}
self.memory_tracker.record_snapshot();
}
pub fn generate_debug_report(&self) -> String {
self.debug_registry.generate_debug_report()
}
pub fn list_debug_providers(&self) -> Vec<String> {
self.debug_registry.list_providers()
}
}