BufferedDecoder: feed by pointer
This commit is contained in:
parent
5fe041fa45
commit
62480318cc
|
@ -1,6 +1,6 @@
|
|||
# Package
|
||||
|
||||
version = "20221022"
|
||||
version = "20221023"
|
||||
author = "Emery Hemingway"
|
||||
description = "data model and serialization format"
|
||||
license = "Unlicense"
|
||||
|
|
|
@ -647,10 +647,13 @@ proc newBufferedDecoder*(maxSize = 4096): BufferedDecoder =
|
|||
assert $pr == "<foobar>"
|
||||
BufferedDecoder(stream: newStringStream(), maxSize: maxSize)
|
||||
|
||||
proc feed*[T: byte|char](dec: var BufferedDecoder; data: openarray[T]) =
|
||||
if dec.maxSize < (dec.stream.getPosition + data.len):
|
||||
proc feed*(dec: var BufferedDecoder; buf: pointer; len: int) =
|
||||
if dec.maxSize < (dec.stream.getPosition + len):
|
||||
raise newException(IOError, "BufferedDecoder at maximum buffer size")
|
||||
dec.stream.writeData(unsafeAddr data[0], data.len)
|
||||
dec.stream.writeData(buf, len)
|
||||
|
||||
proc feed*[T: byte|char](dec: var BufferedDecoder; data: openarray[T]) =
|
||||
dec.feed(unsafeAddr data[0], data.len)
|
||||
|
||||
proc decode*(dec: var BufferedDecoder; E = void): (bool, Preserve[E]) =
|
||||
## Decode from `dec`. If decoding fails the internal position of the
|
||||
|
|
Loading…
Reference in New Issue