Tracktion / choc

A collection of header only classes, permissively licensed, to provide basic useful tasks with the bare-minimum of dependencies.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Passing contents of std::vector to a QuickJS function

juanBerger opened this issue · comments

I'm missing something basic I think.
I have a file read into a vector:

std::vector<uint8_t>fileBuffer((std::istreambuf_iterator<char>(file)), (std::istreambuf_iterator<char>()));

I want to load it into a js Uint8Array. The only way that works for me so far is one byte at a time:

for (int i = 0; i < fileBuffer.size(); ++i){
  uint8_t byte = fileBuffer[i];
  jsContext.invoke("putByte", byte);
}

This is pretty slow. I can pass a pointer, but not sure how to de reference that on the js side.
What's the best way to do this?
Many Thanks!

Good question - I don't really know how quickjs handles IntArrays, it'd take a bit of research to figure out an efficient way to get the data in and out..