diff --git a/contractabi/decoding.nim b/contractabi/decoding.nim index 6ca7823..24c9228 100644 --- a/contractabi/decoding.nim +++ b/contractabi/decoding.nim @@ -1,6 +1,7 @@ import pkg/stint import pkg/stew/endians2 import pkg/upraises +import ./encoding push: {.upraises:[].} @@ -93,6 +94,20 @@ func finish*(decoder: var AbiDecoder) = doAssert decoder.index == decoder.bytes.len, "unread trailing bytes found" doAssert decoder.index mod 32 == 0, "encoding variant broken" +func read*[T](decoder: var AbiDecoder, _: type seq[T]): seq[T] = + let len = decoder.read(uint64) + decoder.startTuple(dynamic=true) + for _ in 0..