use crate::prelude::*;
use bincode::error::DecodeError;
impl Module {
pub fn load_mod(source: &[u8]) -> Result<Self, DecodeError> {
use super::amiga::amiga_module::AmigaModule;
match AmigaModule::load(source) {
Ok(m) => Ok(m.to_module()),
Err(e) => Err(e),
}
}
pub fn load_xm(source: &[u8]) -> Result<Self, DecodeError> {
use super::xm::xmmodule::XmModule;
match XmModule::load(source) {
Ok(m) => Ok(m.to_module()),
Err(e) => Err(e),
}
}
pub fn load_s3m(source: &[u8]) -> Result<Self, DecodeError> {
use super::s3m::s3m_module::S3mModule;
match S3mModule::load(source) {
Ok(m) => Ok(m.to_module()),
Err(e) => Err(e),
}
}
pub fn load_it(source: &[u8]) -> Result<Self, DecodeError> {
use super::it::it_module::ItModule;
match ItModule::load(source) {
Ok(m) => Ok(m.to_module()),
Err(e) => Err(e),
}
}
pub fn load(source: &[u8]) -> Result<Self, DecodeError> {
if let Ok(m) = Self::load_xm(source) {
return Ok(m);
};
if let Ok(m) = Self::load_s3m(source) {
return Ok(m);
};
if let Ok(m) = Self::load_it(source) {
return Ok(m);
};
if let Ok(m) = Self::load_mod(source) {
return Ok(m);
};
Err(DecodeError::Other("Unknown data?"))
}
}