use cviz::model::ValueType;
use wasm_encoder::{ComponentValType, PrimitiveValType, ValType};
pub(crate) fn val_type_byte_size(vt: &ValType) -> u32 {
match vt {
ValType::I32 | ValType::F32 => 4,
ValType::I64 | ValType::F64 => 8,
ValType::V128 => 16,
ValType::Ref(_) => 4,
}
}
pub(crate) fn align_to_val(offset: u32, align: u32) -> u32 {
offset.div_ceil(align) * align
}
pub(crate) fn prim_cv(vt: &ValueType) -> Option<ComponentValType> {
let pv = match vt {
ValueType::Bool => PrimitiveValType::Bool,
ValueType::U8 => PrimitiveValType::U8,
ValueType::S8 => PrimitiveValType::S8,
ValueType::U16 => PrimitiveValType::U16,
ValueType::S16 => PrimitiveValType::S16,
ValueType::U32 => PrimitiveValType::U32,
ValueType::S32 => PrimitiveValType::S32,
ValueType::U64 => PrimitiveValType::U64,
ValueType::S64 => PrimitiveValType::S64,
ValueType::F32 => PrimitiveValType::F32,
ValueType::F64 => PrimitiveValType::F64,
ValueType::Char => PrimitiveValType::Char,
ValueType::String => PrimitiveValType::String,
_ => return None,
};
Some(ComponentValType::Primitive(pv))
}