From ab84ad75629b0a4124221023ca91411d2cd62a32 Mon Sep 17 00:00:00 2001
From: Ben Bridle <ben@derelict.engineering>
Date: Tue, 25 Mar 2025 12:46:49 +1300
Subject: Restructure program

This commit also includes changes to devices according to the latest
devices specification, in particular the math and system devices.
---
 src/types/read_buffer.rs | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 src/types/read_buffer.rs

(limited to 'src/types/read_buffer.rs')

diff --git a/src/types/read_buffer.rs b/src/types/read_buffer.rs
new file mode 100644
index 0000000..7128048
--- /dev/null
+++ b/src/types/read_buffer.rs
@@ -0,0 +1,34 @@
+pub struct ReadBuffer {
+    pub bytes: Vec<u8>,
+    pub pointer: usize,
+}
+
+impl ReadBuffer {
+    pub fn new() -> Self {
+        Self {
+            bytes: Vec::new(),
+            pointer: 0,
+        }
+    }
+
+    pub fn from_str(text: &str) -> Self {
+        Self {
+            bytes: text.bytes().collect(),
+            pointer: 0,
+        }
+    }
+
+    pub fn set_str(&mut self, text: &str) {
+        self.bytes = text.bytes().collect();
+        self.pointer = 0;
+    }
+
+    pub fn read(&mut self) -> u8 {
+        let pointer = self.pointer;
+        self.pointer += 1;
+        match self.bytes.get(pointer) {
+            Some(byte) => *byte,
+            None => 0,
+        }
+    }
+}
-- 
cgit v1.2.3-70-g09d2