#[cfg(feature = "pyo3")]
use pyo3::prelude::*;
use crate::{
addresses::{Rom, Vram},
metadata::OverlayCategoryName,
};
#[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
#[cfg_attr(feature = "pyo3", pyclass(module = "spimdisasm"))]
pub struct ParentSegmentInfo {
segment_rom: Rom,
segment_vram: Vram,
overlay_category_name: Option<OverlayCategoryName>,
}
impl ParentSegmentInfo {
pub const fn new(
segment_rom: Rom,
segment_vram: Vram,
overlay_category_name: Option<OverlayCategoryName>,
) -> Self {
Self {
segment_rom,
segment_vram,
overlay_category_name,
}
}
pub const fn segment_rom(&self) -> Rom {
self.segment_rom
}
pub const fn segment_vram(&self) -> Vram {
self.segment_vram
}
pub const fn overlay_category_name(&self) -> Option<&OverlayCategoryName> {
self.overlay_category_name.as_ref()
}
}
#[cfg(feature = "pyo3")]
pub(crate) mod python_bindings {
use super::*;
#[pymethods]
impl ParentSegmentInfo {
#[new]
#[pyo3(signature = (segment_rom, segment_vram, overlay_category_name))]
pub fn py_new(
segment_rom: Rom,
segment_vram: Vram,
overlay_category_name: Option<OverlayCategoryName>,
) -> Self {
Self::new(segment_rom, segment_vram, overlay_category_name)
}
}
}