#![no_std] #![forbid(unsafe_code)] #![cfg_attr(not(feature = "std"), feature(error_in_core))] extern crate alloc; #[cfg(feature = "std")] extern crate std; mod conversion; mod error; mod module; use alloc::boxed::Box; pub use error::*; use module::ModuleReader; use tinywasm_types::{Export, FuncType, Function}; pub struct Parser {} impl Parser { pub fn parse_module_bytes(wasm: &[u8]) -> Result { let reader = ModuleReader::new(); reader.try_into() } pub fn parse_module_file(file_name: &str) -> Result { let reader = ModuleReader::new(); reader.try_into() } #[cfg(feature = "std")] pub fn parse_module_stream(stream: impl std::io::Read) -> Result { let reader = ModuleReader::new(); reader.try_into() } pub fn read_module_bytes(bytes: &[u8]) -> Result { unimplemented!() } pub fn read_module_file(file_name: &str) -> Result { unimplemented!() } #[cfg(feature = "std")] pub fn read_module_stream(stream: impl std::io::Read) -> Result { unimplemented!() } } pub struct TinyWasmModule { pub version: Option, pub start_func: Option, pub types: Option>, pub funcs: Option>, pub exports: Option>, // pub tables: Option, // pub memories: Option, // pub globals: Option, // pub elements: Option>, // pub imports: Option>, // pub data_segments: Option>, } impl TryFrom> for TinyWasmModule { type Error = ParseError; fn try_from(reader: ModuleReader<'_>) -> Result { if !reader.end_reached { return Err(ParseError::EndNotReached); } unimplemented!() } }