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