|
|
|
@ -1,20 +1,8 @@
|
|
|
|
|
use std::collections::HashMap;
|
|
|
|
|
|
|
|
|
|
use pyo3::wrap_pymodule;
|
|
|
|
|
use pyo3::exceptions::RuntimeError;
|
|
|
|
|
use pyo3::prelude::*;
|
|
|
|
|
|
|
|
|
|
fn runtime_error(message: String) -> PyErr {
|
|
|
|
|
RuntimeError::py_err(message)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn wrap_ironring_errors<T, E: std::fmt::Debug>(result: Result<T, E>) -> PyResult<T> {
|
|
|
|
|
match result {
|
|
|
|
|
Ok(r) => Ok(r),
|
|
|
|
|
Err(e) => Err(runtime_error(format!("{:?}", e))),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[pymodule]
|
|
|
|
|
fn name_hashes(_py: Python, m: &PyModule) -> PyResult<()> {
|
|
|
|
|
use ironring::name_hashes::*;
|
|
|
|
@ -37,27 +25,8 @@ fn name_hashes(_py: Python, m: &PyModule) -> PyResult<()> {
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[pymodule]
|
|
|
|
|
fn unpack_bnd(_py: Python, m: &PyModule) -> PyResult<()> {
|
|
|
|
|
use ironring::unpackers::bnd::*;
|
|
|
|
|
use ironring::parsers::bnd::Bnd;
|
|
|
|
|
|
|
|
|
|
#[pyfn(m, "load_bnd_file")]
|
|
|
|
|
fn py_load_bnd_file(_py: Python, bnd_path: &str) -> PyResult<(Bnd, Vec<u8>)> {
|
|
|
|
|
wrap_ironring_errors(load_bnd_file(bnd_path))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[pyfn(m, "load_bnd")]
|
|
|
|
|
fn py_load_bnd(_py: Python, bnd_data: &[u8]) -> PyResult<Bnd> {
|
|
|
|
|
wrap_ironring_errors(load_bnd(bnd_data))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[pymodule]
|
|
|
|
|
fn pyironring(_py: Python, m: &PyModule) -> PyResult<()> {
|
|
|
|
|
m.add_wrapped(wrap_pymodule!(name_hashes))?;
|
|
|
|
|
m.add_wrapped(wrap_pymodule!(unpack_bnd))?;
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
|