/** * @license * Copyright 2022 The Emscripten Authors * SPDX-License-Identifier: MIT */ // These functions are defined once here, then included in the library below // under two different names. function setValueImpl(ptr, value, type = 'i8') { if (type.endsWith('*')) type = '*'; switch (type) { case 'i1': {{{ makeSetValue('ptr', '0', 'value', 'i1') }}}; break; case 'i8': {{{ makeSetValue('ptr', '0', 'value', 'i8') }}}; break; case 'i16': {{{ makeSetValue('ptr', '0', 'value', 'i16') }}}; break; case 'i32': {{{ makeSetValue('ptr', '0', 'value', 'i32') }}}; break; #if WASM_BIGINT case 'i64': {{{ makeSetValue('ptr', '0', 'value', 'i64') }}}; break; #else case 'i64': abort('to do setValue(i64) use WASM_BIGINT'); #endif case 'float': {{{ makeSetValue('ptr', '0', 'value', 'float') }}}; break; case 'double': {{{ makeSetValue('ptr', '0', 'value', 'double') }}}; break; case '*': {{{ makeSetValue('ptr', '0', 'value', '*') }}}; break; default: abort(`invalid type for setValue: ${type}`); } } function getValueImpl(ptr, type = 'i8') { if (type.endsWith('*')) type = '*'; switch (type) { case 'i1': return {{{ makeGetValue('ptr', '0', 'i1') }}}; case 'i8': return {{{ makeGetValue('ptr', '0', 'i8') }}}; case 'i16': return {{{ makeGetValue('ptr', '0', 'i16') }}}; case 'i32': return {{{ makeGetValue('ptr', '0', 'i32') }}}; #if WASM_BIGINT case 'i64': return {{{ makeGetValue('ptr', '0', 'i64') }}}; #else case 'i64': abort('to do getValue(i64) use WASM_BIGINT'); #endif case 'float': return {{{ makeGetValue('ptr', '0', 'float') }}}; case 'double': return {{{ makeGetValue('ptr', '0', 'double') }}}; case '*': return {{{ makeGetValue('ptr', '0', '*') }}}; default: abort(`invalid type for getValue: ${type}`); } } var LibraryMemOps = { $setValue__docs: ` /** * @param {number} ptr * @param {number} value * @param {string} type */`, $setValue: setValueImpl, $getValue__docs: ` /** * @param {number} ptr * @param {string} type */`, $getValue: getValueImpl, }; addToLibrary(LibraryMemOps);