diff --git a/leopard/leopard.nim b/leopard/leopard.nim index 96456f2..b631b10 100644 --- a/leopard/leopard.nim +++ b/leopard/leopard.nim @@ -203,6 +203,81 @@ func decode*( ok() + +func decode*( + self: var LeoDecoder, + data, + parity, + recovered: ptr UncheckedArray[ptr UncheckedArray[byte]], + dataLen,parityLen,recoveredLen: int): Result[void, cstring] = + ## Decode a list of buffers in `data` and `parity` into a list + ## of `recovered` buffers of `bufSize`. The list of `recovered` + ## buffers should be match the `Leo.buffers` + ## + ## `data` - list of original data `buffers` of size `bufSize` + ## `parity` - list of parity `buffers` of size `bufSize` + ## `recovered` - list of recovered `buffers` of size `bufSize` + ## + + if dataLen != self.buffers: + return err("Number of data buffers should match!") + + if parityLen != self.parity: + return err("Number of parity buffers should match!") + + if recoveredLen != self.buffers: + return err("Number of recovered buffers should match buffers!") + + # clean out work and data buffers + for i in 0.. 0: for i, p in self.workBufferPtr: