]> git.proxmox.com Git - rustc.git/blob - vendor/minifier/src/json/read/internal_buffer.rs
New upstream version 1.32.0~beta.2+dfsg1
[rustc.git] / vendor / minifier / src / json / read / internal_buffer.rs
1 const ARRAY_DEFAULT: u8 = 0;
2
3 #[derive(Debug)]
4 pub struct Buffer {
5 buffer: Vec<u8>,
6 read_pos: usize,
7 buffer_size: usize,
8 data_size: usize,
9 }
10
11 impl Buffer {
12 pub fn new(size: usize) -> Buffer {
13 Buffer {
14 buffer: vec![ARRAY_DEFAULT; size],
15 read_pos: 0,
16 buffer_size: size,
17 data_size: 0,
18 }
19 }
20
21 pub fn as_mut(&mut self) -> &mut [u8] {
22 self.buffer.as_mut()
23 }
24
25 pub fn update_metadata(&mut self, size: usize) {
26 self.read_pos = 0;
27 self.data_size = size;
28 }
29
30 pub fn next(&mut self) -> Option<u8> {
31 if self.read_pos >= self.data_size {
32 return None;
33 }
34 let item = self.buffer.get(self.read_pos);
35 self.read_pos += 1;
36 item.and_then(|test|Some(*test))
37 }
38
39 pub fn cont(&self) -> bool {
40 self.data_size == self.buffer_size
41 }
42 }