datex_core/runtime/
memory.rs1use std::collections::HashMap;
2
3use crate::datex_values::Pointer;
4
5pub struct Memory {
6 pointers: HashMap<[u8; 26], Pointer>, }
8
9impl Memory {
10 pub fn new() -> Memory{
11 Memory {
12 pointers: HashMap::new()
13 }
14 }
15
16 pub fn get_pointer_by_id(&mut self, address: [u8; 26]) -> Option<&mut Pointer> {
17 self.pointers.get_mut(&address)
18 }
19
20 pub fn get_pointer_by_id_vec(&mut self, address: Vec<u8>) -> Option<&mut Pointer> {
21 let mut address_array: [u8; 26] = [0; 26];
22 for i in 0..26 {
23 address_array[i] = address[i];
24 }
25 self.get_pointer_by_id(address_array)
26 }
27
28 pub fn get_pointer_ids(&self) -> Vec<[u8; 26]> {
29 let mut ids: Vec<[u8; 26]> = Vec::new();
30 for id in self.pointers.keys() {
31 ids.push(*id);
32 }
33 ids
34 }
35
36 pub fn store_pointer(&mut self, address: [u8; 26], pointer: Pointer) {
37 self.pointers.insert(address, pointer);
38 }
39}