use crate::prelude::*;
use crate::tracker::import::bin_reader::ImportError;
impl Module {
#[cfg(feature = "import_mod")]
pub fn load_mod(source: &[u8]) -> Result<Self, ImportError> {
use super::amiga::amiga_module::AmigaModule;
Ok(AmigaModule::load(source)?.to_module())
}
#[cfg(feature = "import_xm")]
pub fn load_xm(source: &[u8]) -> Result<Self, ImportError> {
use super::xm::xmmodule::XmModule;
Ok(XmModule::load(source)?.to_module())
}
#[cfg(feature = "import_s3m")]
pub fn load_s3m(source: &[u8]) -> Result<Self, ImportError> {
use super::s3m::s3m_module::S3mModule;
Ok(S3mModule::load(source)?.to_module())
}
#[cfg(feature = "import_it")]
pub fn load_it(source: &[u8]) -> Result<Self, ImportError> {
use super::it::it_module::ItModule;
Ok(ItModule::load(source)?.to_module())
}
#[cfg(feature = "import_dw")]
pub fn load_dw(source: &[u8]) -> Result<Self, ImportError> {
use super::dw::dw_module::DwModule;
Ok(DwModule::load(source)?.to_module())
}
pub fn load(source: &[u8]) -> Result<Self, ImportError> {
#[cfg(feature = "import_xm")]
if let Ok(m) = Self::load_xm(source) {
return Ok(m);
};
#[cfg(feature = "import_s3m")]
if let Ok(m) = Self::load_s3m(source) {
return Ok(m);
};
#[cfg(feature = "import_it")]
if let Ok(m) = Self::load_it(source) {
return Ok(m);
};
#[cfg(feature = "import_mod")]
if let Ok(m) = Self::load_mod(source) {
return Ok(m);
};
#[cfg(feature = "import_dw")]
if let Ok(m) = Self::load_dw(source) {
return Ok(m);
};
let _ = source;
Err(ImportError::Other("Unknown data?"))
}
}