t7098.nim 635 B

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