Arch-independent demangling and add gnuv2_demangle for old g++ projects (#262)

This commit is contained in:
Anghelo Carvajal
2025-09-22 20:24:29 -03:00
committed by GitHub
parent e2c70342c9
commit fe8e7029f6
14 changed files with 132 additions and 79 deletions

View File

@@ -1,10 +1,12 @@
use egui::TextStyle;
use objdiff_core::diff::{ConfigEnum, Demangler};
use crate::views::appearance::Appearance;
#[derive(Default)]
pub struct DemangleViewState {
pub text: String,
pub demangler: Demangler,
}
pub fn demangle_window(
@@ -14,9 +16,17 @@ pub fn demangle_window(
appearance: &Appearance,
) {
egui::Window::new("Demangle").open(show).show(ctx, |ui| {
egui::ComboBox::from_label("Demangler")
.selected_text(state.demangler.name().to_string())
.show_ui(ui, |ui| {
for demangler in Demangler::variants() {
ui.selectable_value(&mut state.demangler, *demangler, demangler.name());
}
});
ui.separator();
ui.text_edit_singleline(&mut state.text);
ui.add_space(10.0);
if let Some(demangled) = cwdemangle::demangle(&state.text, &Default::default()) {
if let Some(demangled) = state.demangler.demangle(&state.text) {
ui.scope(|ui| {
ui.style_mut().override_text_style = Some(TextStyle::Monospace);
ui.colored_label(appearance.replace_color, &demangled);