ttvm 0.1.8

Runtime and compiler infrastructure for Rust
Documentation
use super::*;

#[derive(Clone)]
pub struct Mem {
    bytes: Vec<Byte>,
    size: usize
}

impl Mem {
    pub fn new(size: usize) -> Mem {
        Mem {
            bytes: vec![0x0; size],
            size
        }
    }
    
    pub fn from(bytes: Vec<Byte>) -> Mem {
        Mem {
            bytes: bytes.clone(),
            size: bytes.len()
        }
    }

    pub fn get(&self, index: usize) -> Option<&Byte> {
        if index < self.len() {
            Some(match self.bytes.get(index) {
                Some(some) => some,
                None => return None
            })
        } else {
            None
        }
    }

    pub fn get_mut(&mut self, index: usize) -> Option<&mut Byte> {
        if index < self.len() {
            Some(match self.bytes.get_mut(index) {
                Some(some) => some,
                None => return None
            })
        } else {
            None
        }
    }

    pub fn len(&self) -> usize {
        self.bytes.len()
    }

    pub fn clone_into_vec(&self) -> Vec<Byte> {
        self.bytes.clone()
    }
}