datex_core/runtime/
memory.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use std::collections::HashMap;

use crate::datex_values::Pointer;

pub struct Memory {
	pointers: HashMap<[u8; 26], Pointer>, // all pointers
}

impl Memory {
	pub fn new() -> Memory{
		Memory {
			pointers: HashMap::new()
		}
	}

	pub fn get_pointer_by_id(&mut self, address: [u8; 26]) -> Option<&mut Pointer> {
		self.pointers.get_mut(&address)
	}

	pub fn get_pointer_by_id_vec(&mut self, address: Vec<u8>) -> Option<&mut Pointer> {
		let mut address_array: [u8; 26] = [0; 26];
		for i in 0..26 {
			address_array[i] = address[i];
		}
		self.get_pointer_by_id(address_array)
	}

	pub fn get_pointer_ids(&self) -> Vec<[u8; 26]> {
		let mut ids: Vec<[u8; 26]> = Vec::new();
		for id in self.pointers.keys() {
			ids.push(*id);
		}
		ids
	}

	pub fn store_pointer(&mut self, address: [u8; 26], pointer: Pointer) {
		self.pointers.insert(address, pointer);
	}
}