1#![warn(clippy::manual_let_else)]
5
6mod found_symbol_info;
7mod mapfile;
8mod maps_comparison_info;
9mod parser;
10mod progress_stats;
11mod section;
12mod segment;
13mod symbol;
14mod symbol_comparison_info;
15mod symbol_decomp_state;
16pub mod utils;
17
18#[cfg(feature = "objdiff_report")]
19pub mod report;
20
21pub use found_symbol_info::FoundSymbolInfo;
22pub use mapfile::MapFile;
23pub use maps_comparison_info::MapsComparisonInfo;
24pub use progress_stats::ProgressStats;
25pub use section::{PathDecompSettings, Section};
26pub use segment::Segment;
27pub use symbol::Symbol;
28pub use symbol_comparison_info::SymbolComparisonInfo;
29pub use symbol_decomp_state::{SymbolDecompState, SymbolDecompStateIter};
30
31#[deprecated(since = "2.8.0", note = "Use `Section` instead")]
33pub use Section as File;
34
35#[macro_use]
36extern crate lazy_static;
37
38#[cfg(feature = "python_bindings")]
39use pyo3::prelude::*;
40
41#[cfg(feature = "python_bindings")]
42#[pymodule]
43fn mapfile_parser(m: &Bound<'_, PyModule>) -> PyResult<()> {
44 m.add_class::<mapfile::MapFile>()?;
45 m.add_class::<segment::Segment>()?;
46 m.add_class::<section::Section>()?;
47 m.add_class::<symbol::Symbol>()?;
48 m.add_class::<found_symbol_info::python_bindings::PyFoundSymbolInfo>()?;
49 m.add_class::<symbol_comparison_info::python_bindings::PySymbolComparisonInfo>()?;
50 m.add_class::<maps_comparison_info::python_bindings::PyMapsComparisonInfo>()?;
51 m.add_class::<progress_stats::ProgressStats>()?;
52 m.add_class::<report::ReportCategories>()?;
53 Ok(())
54}
55
56#[cfg(test)]
57mod tests {
58 use std::path::PathBuf;
59
60 use crate::mapfile::MapFile;
61
62 #[test]
65 fn w0_000_map() {
66 let _ = MapFile::new_from_map_file(&PathBuf::from("tests/maps/gnuld/misc/w0_000.map"));
67 }
68}