1*c8dee2aaSAndroid Build Coastguard Worker/// <reference path="../bindings/embind.d.ts" /> 2*c8dee2aaSAndroid Build Coastguard Worker/// <reference path="public_api.d.ts" /> 3*c8dee2aaSAndroid Build Coastguard Worker// eslint-disable-next-line @typescript-eslint/no-unused-vars 4*c8dee2aaSAndroid Build Coastguard Workernamespace memory { 5*c8dee2aaSAndroid Build Coastguard Worker declare const Module: embind.EmbindModule; 6*c8dee2aaSAndroid Build Coastguard Worker export const nullptr = 0; 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker export const copy1dArray = (arr: number[] | public_api.TypedArray | null, 9*c8dee2aaSAndroid Build Coastguard Worker dest: Heaps, ptr?: number): number => { 10*c8dee2aaSAndroid Build Coastguard Worker if (!arr || !arr.length) { 11*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 12*c8dee2aaSAndroid Build Coastguard Worker } 13*c8dee2aaSAndroid Build Coastguard Worker const bytesPerElement = Module[dest].BYTES_PER_ELEMENT; 14*c8dee2aaSAndroid Build Coastguard Worker ptr ||= Module._malloc(arr.length * bytesPerElement); 15*c8dee2aaSAndroid Build Coastguard Worker Module[dest].set(arr, ptr / bytesPerElement); 16*c8dee2aaSAndroid Build Coastguard Worker return ptr; 17*c8dee2aaSAndroid Build Coastguard Worker }; 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker export const freeIfNecessary = (ptr: number, arr: any[] | public_api.TypedArray): void => { 20*c8dee2aaSAndroid Build Coastguard Worker if (arr && !(arr as any)._ck) { 21*c8dee2aaSAndroid Build Coastguard Worker Module._free(ptr); 22*c8dee2aaSAndroid Build Coastguard Worker } 23*c8dee2aaSAndroid Build Coastguard Worker }; 24*c8dee2aaSAndroid Build Coastguard Worker 25*c8dee2aaSAndroid Build Coastguard Worker // Recommended over enums by Effective Typescript pg 197. 26*c8dee2aaSAndroid Build Coastguard Worker export type Heaps = 'HEAPF32' | 'HEAPU8' | 'HEAPU16' | 'HEAPU32' | 'HEAP8' | 'HEAP16' | 'HEAP32'; 27*c8dee2aaSAndroid Build Coastguard Worker} 28