blob: c9a0ddc97d612be3e84e155a40de0b9b37b71dbe [file] [log] [blame]
awlane1cec2332025-04-24 17:24:47 -05001class CircularByteBuffer:
2 """Byte buffer handmade for terminal output"""
3 size: int = 0
4 start: int = 0
5 buffer: bytearray
6
7 def __init__(self, size: int):
8 self.buffer = bytearray(size)
9
10 def writeByte(self, byte: int):
11 if self.size < len(self.buffer):
12 self.buffer[self.size] = byte
13 self.size += 1
14 return
15
16 self.buffer[self.start % self.size] = byte
17 self.start = (self.start + 1) % self.size
18
19 def write(self, data: bytes):
20 for byte in data:
21 self.writeByte(byte)
22
23 def read(self):
24 if self.size <= len(self.buffer):
25 return self.buffer[self.start:self.start + self.size]
26 else:
27 return self.buffer[self.start:] + self.buffer[:self.start]