From 0f4c4d14658cd5418f8573c0eba4f18ce1e3b320 Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Tue, 30 Nov 2021 16:22:52 +0100 Subject: [PATCH] Decode sequences and arrays --- contractabi/decoding.nim | 15 +++++++++++++++ contractabi/encoding.nim | 8 ++++++++ tests/contractabi/testDecoding.nim | 9 +++++++++ tests/contractabi/testEncoding.nim | 6 ++++++ 4 files changed, 38 insertions(+) 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..