t7098.nim 602 B

1234567891011121314151617181920212223242526272829303132
  1. type
  2. Byte* = uint8
  3. Bytes* = seq[Byte]
  4. BytesRange* = object
  5. bytes: Bytes
  6. ibegin, iend: int
  7. proc initBytesRange*(s: var Bytes, ibegin = 0, iend = -1): BytesRange =
  8. let e = if iend < 0: s.len + iend + 1
  9. else: iend
  10. assert ibegin >= 0 and e <= s.len
  11. shallow(s)
  12. result.bytes = s
  13. result.ibegin = ibegin
  14. result.iend = e
  15. converter fromSeq*(s: Bytes): BytesRange =
  16. var seqCopy = s
  17. return initBytesRange(seqCopy)
  18. type
  19. Reader* = object
  20. data: BytesRange
  21. position: int
  22. proc readerFromBytes*(input: BytesRange): Reader =
  23. discard
  24. let r = readerFromBytes(@[])