Rich Lane | 872b95a | 2013-06-17 18:39:14 -0700 | [diff] [blame^] | 1 | OFReader = {} |
| 2 | OFReader.new = function(buf, offset) |
| 3 | local self = {} |
| 4 | offset = offset or 0 |
| 5 | |
| 6 | self.read = function(len) |
| 7 | local r = buf(offset, len) |
| 8 | offset = offset + len |
| 9 | return r |
| 10 | end |
| 11 | |
| 12 | self.read_all = function() |
| 13 | local r = buf(offset, buf.len() - offset) |
| 14 | offset = buf.len() |
| 15 | return r |
| 16 | end |
| 17 | |
| 18 | self.peek = function(off, len) |
| 19 | return buf(offset + off, len) |
| 20 | end |
| 21 | |
| 22 | self.skip = function(len) |
| 23 | offset = offset + len |
| 24 | end |
| 25 | |
| 26 | self.is_empty = function() |
| 27 | return offset == buf:len() |
| 28 | end |
| 29 | |
| 30 | self.slice = function(len) |
| 31 | r = OFReader.new(buf(offset, len)) |
| 32 | offset = offset + len |
| 33 | return r |
| 34 | end |
| 35 | |
| 36 | return self |
| 37 | end |