- From: Adam Rice <notifications@github.com>
- Date: Tue, 30 Oct 2018 19:32:59 -0700
- To: whatwg/encoding <encoding@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/encoding/issues/69/434539796@github.com>
> Sorry if I'm missing something obvious but how does the caller of encodeInto learn how many bytes were written into the BufferSource? Okay, that's embarrassing :rofl:. I did say it was a strawman :smile:. So, you're proposing something like `encodeInto(bufferSource, bufferOffset, byteLength, string, stringOffset)`? Example (trying to be more realistic to avoid the trap I fell into last time): ```javascript function convertString(bufferSource, string, callback) { let bufferSize = 256; let bufferStart = malloc(bufferSource, bufferSize); let bytesWritten = 0; let stringOffset = 0; while (true) { try { bytesWritten += cachedEncoder.encodeInto(bufferSource, bufferStart + bytesWritten, bufferSize, string, stringOffset); callback(bufferStart, bytesWritten); free(bufferSource, bufferStart); break; } catch (e) { if (e instanceof TextEncoderBufferOverflowError) { stringOffset += e.codeUnitsConsumed; bytesWritten += e.bytesWritten; bufferSize *= 2; bufferStart = realloc(bufferSource, bufferStart, bufferSize); } else { free(bufferSource, bufferStart); throw e; } } } } ``` I think `encodeInto()` having 5 arguments is unwieldy, but since the API is aimed at advanced users it may be acceptable. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/encoding/issues/69#issuecomment-434539796
Received on Wednesday, 31 October 2018 02:33:20 UTC