t7098.nim 660 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. when defined(gcRefc):
  15. shallow(s)
  16. result.bytes = s
  17. result.ibegin = ibegin
  18. result.iend = e
  19. converter fromSeq*(s: Bytes): BytesRange =
  20. var seqCopy = s
  21. return initBytesRange(seqCopy)
  22. type
  23. Reader* = object
  24. data: BytesRange
  25. position: int
  26. proc readerFromBytes*(input: BytesRange): Reader =
  27. discard
  28. let r = readerFromBytes(@[])