emscripten を使用して Javascript を生成していますが、型付き配列を返す関数を取得する方法を見つけようとしていました。私が返そうとしている配列は静的な長さですが、ポインターベースの戻り値の型が JS ランドでどのように扱われるかについて少し混乱しています。
この種のラッパーは物事を行う方法ですか: javascript から Emscripten 型付き配列にアクセスするにはどうすればよいですか?
どうもありがとう。
emscripten を使用して Javascript を生成していますが、型付き配列を返す関数を取得する方法を見つけようとしていました。私が返そうとしている配列は静的な長さですが、ポインターベースの戻り値の型が JS ランドでどのように扱われるかについて少し混乱しています。
この種のラッパーは物事を行う方法ですか: javascript から Emscripten 型付き配列にアクセスするにはどうすればよいですか?
どうもありがとう。
emscripten は、ヒープに 1 つの大きな ArrayBuffer を用意することで機能します (型付き配列が有効になっていると仮定すると、デフォルトで有効になります)。
emscripten がコンパイルするモジュールには、この単一の ArrayBuffer (Module.HEAP) と、ヒープの多くの型付き ArrayBufferView (Module.HEAPU8、Module.HEAPU32 など) の両方のプロパティが含まれています。
連続した配列の先頭へのポインターを受け取った場合は、それが表すデータの新しいビューを取得できます (注: これはおそらく文字配列であると想定して HEAP8 を使用しています)。
var array = Module.HEAP8.subarray(ptr, ptr+number_of_elements);
また、各型付きビューは要素に基づいて引数を取り、emscripten が返すポインターはヒープへのバイト オフセットを表すことに注意してください。たとえば、13 個の整数の配列は次のようになります。
var array = Module.HEAP32.subarray((ptr>>2), (ptr>>2)+13);