Skip to main content

mapfile_parser/
lib.rs

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