toNative method

Implementation

Pointer<NativePerformanceEntryList> toNative() {
  Pointer<NativePerformanceEntryList> list = malloc.allocate<NativePerformanceEntryList>(sizeOf<NativePerformanceEntryList>());
  int byteLength = entries.length * 3;

  Uint64List data = Uint64List(byteLength);

  int dataIndex = 0;

  for (int i = 0; i < byteLength; i += 3) {
    data[i] = (entries[dataIndex].name).toNativeUtf8().address;
    data[i + 1] = entries[dataIndex].startTime;
    data[i + 2] = entries[dataIndex].uniqueId;
    dataIndex++;
  }

  final Pointer<Uint64> bytes = malloc.allocate<Uint64>(sizeOf<Uint64>() *  byteLength);
  final Uint64List buffer = bytes.asTypedList(byteLength);
  buffer.setAll(0, data);

  list.ref.length = entries.length;
  list.ref.entries = bytes;

  return list;
}