mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-01 19:02:18 +00:00
Modifies inflate() to return a discardable bool. Refs #1048.
This commit is contained in:
@@ -293,26 +293,17 @@ proc uncompress*(sourceBuf: cstring, sourceLen: int): string =
|
||||
result = decompressed
|
||||
|
||||
|
||||
proc inflate*(buffer: var string) =
|
||||
proc inflate*(buffer: var string): bool {.discardable.} =
|
||||
## Convenience proc which inflates a string containing compressed data.
|
||||
##
|
||||
## Passing a nil string will crash this proc in release mode and assert in
|
||||
## debug mode. It is ok to pass a buffer which doesn't contain deflated data,
|
||||
## in this case the proc won't modify the buffer. To check if data was
|
||||
## inflated compare the final length of the `buffer` with its original value.
|
||||
## Example:
|
||||
## in this case the proc won't modify the buffer.
|
||||
##
|
||||
## .. code-block:: nimrod
|
||||
## var data: string
|
||||
## # Put something into data.
|
||||
## let originalLen = len(data)
|
||||
## data.inflate()
|
||||
## if originalLen != len(data):
|
||||
## echo "Data was inflated!"
|
||||
## else:
|
||||
## echo "Nothing to inflate"
|
||||
## Returns true if `buffer` was successfully inflated.
|
||||
assert (not buffer.isNil)
|
||||
if buffer.len < 1: return
|
||||
let temp = uncompress(addr(buffer[0]), buffer.len)
|
||||
if not temp.isNil:
|
||||
buffer = temp
|
||||
result = true
|
||||
|
||||
Reference in New Issue
Block a user