datex_core/runtime/
memory.rs

1use std::collections::HashMap;
2
3use crate::datex_values::Pointer;
4
5pub struct Memory {
6	pointers: HashMap<[u8; 26], Pointer>, // all pointers
7}
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}