#![deny(missing_docs)]
#![no_std]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
pub mod ast;
pub mod lex;
pub mod parser;
mod strings;
pub mod untyped;
pub mod value;
pub mod wasm;
pub mod writer;
use alloc::string::String;
use parser::Parser;
use wasm::WasmValue;
use writer::Writer;
pub fn from_str<V: WasmValue>(ty: &V::Type, s: &str) -> Result<V, parser::ParserError> {
let mut parser = Parser::new(s);
let value = parser.parse_value(ty)?;
parser.finish()?;
Ok(value)
}
pub fn to_string(val: &impl WasmValue) -> Result<String, writer::WriterError> {
let mut buf = String::new();
Writer::new(&mut buf).write_value(val)?;
Ok(buf)
}
fn canonicalize_nan32(val: f32) -> f32 {
if val.is_nan() {
f32::from_bits(0x7fc00000)
} else {
val
}
}
fn canonicalize_nan64(val: f64) -> f64 {
if val.is_nan() {
f64::from_bits(0x7ff8000000000000)
} else {
val
}
}