use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct MachoInfo {
pub headers: MachoHeader,
#[serde(default)]
pub commands: MachoCommands,
#[serde(default)]
pub segments: Vec<MachoSegment>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct MachoHeader {
pub magic: String,
pub file_type: String,
pub size_cmds: u32,
pub num_cmds: u32,
#[serde(default)]
pub flags: Vec<String>,
pub cpu_type: String,
pub cpu_subtype: String,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct MachoCommands(pub Vec<HashMap<String, String>>);
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct MachoSegment {
pub name: String,
pub fileoff: String,
pub vmsize: String,
pub vmaddr: String,
#[serde(default)]
pub sections: Vec<MachoSection>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct MachoSection {
#[serde(default)]
pub flags: Vec<String>,
pub name: String,
#[serde(rename = "type")]
pub section_type: String,
}