cyclone_v/memory/
buffer.rs1#![cfg(feature = "std")]
2
3use crate::memory::MemoryMapper;
4use std::pin::Pin;
5
6pub struct BufferMemoryMapper {
9 region: Pin<Box<[u8]>>,
10}
11
12impl BufferMemoryMapper {
13 pub fn new(size: usize) -> Self {
14 Self {
15 region: vec![0; size].into_boxed_slice().into(),
16 }
17 }
18
19 pub fn from_vec(vec: Vec<u8>) -> Self {
20 Self {
21 region: vec.into_boxed_slice().into(),
22 }
23 }
24}
25
26impl MemoryMapper for BufferMemoryMapper {
27 fn create(_address: usize, _size: usize) -> Result<Self, &'static str>
28 where
29 Self: Sized,
30 {
31 unimplemented!()
32 }
33
34 fn len(&self) -> usize {
35 self.region.len()
36 }
37
38 fn as_ptr<T>(&self) -> *const T {
39 self.region.as_ptr() as *const T
40 }
41
42 fn as_mut_ptr<T>(&mut self) -> *mut T {
43 self.region.as_mut_ptr() as *mut T
44 }
45}