encodeTuple method

Uint8List encodeTuple(
  1. List<Object> list
)

Implementation

Uint8List encodeTuple(List<Object> list) {
  final elements = BytesBuilder(copy: false);
  if (elementType.isDynamicType) {
    final types = BytesBuilder(copy: false);
    final elems = BytesBuilder(copy: false);
    var offset = list.length * SolidityType.int32Size;
    for (int i = 0; i < list.length; ++i) {
      types.add(IntType.encodeFromInt(offset));
      final encoded = elementType.encode(list[i]);
      elems.add(encoded);
      offset += SolidityType.int32Size *
          ((encoded.lengthInBytes - 1) ~/ SolidityType.int32Size + 1);
    }
    elements
      ..add(types.takeBytes())
      ..add(elems.takeBytes());
  } else {
    for (final object in list) {
      elements.add(elementType.encode(object));
    }
  }

  return elements.takeBytes();
}