mod error;
mod lower_array;
mod lower_record;
mod memory_writer;
use crate::lowerer::memory_writer::MemoryWriter;
use crate::traits::Allocatable;
pub use error::LoError;
pub use lower_array::array_lower_memory;
pub use lower_array::LoweredArray;
pub use lower_record::record_lower_memory;
pub use it_memory_traits::MemoryView;
pub type LoResult<T> = std::result::Result<T, error::LoError>;
pub struct ILowerer<
'm,
A: Allocatable<MV, Store>,
MV: MemoryView<Store>,
Store: it_memory_traits::Store,
> {
pub writer: MemoryWriter<'m, A, MV, Store>,
}
impl<'m, A: Allocatable<MV, Store>, MV: MemoryView<Store>, Store: it_memory_traits::Store>
ILowerer<'m, A, MV, Store>
{
pub fn new(view: MV, allocatable: &'m mut A) -> LoResult<Self> {
let writer = MemoryWriter::new(view, allocatable)?;
let lowerer = Self { writer };
Ok(lowerer)
}
}