MCPcopy Create free account
hub / github.com/eva-engine/eva.js / __embind_register_std_string

Function __embind_register_std_string

examples/public/basis/basis_transcoder.js:940–997  ·  view source on GitHub ↗
(rawType, name)

Source from the content-addressed store, hash-verified

938 return new TA(buffer, data, size);
939 }name = readLatin1String(name); registerType(rawType, { name, fromWireType: decodeMemoryView, argPackAdvance: 8, readValueFromPointer: decodeMemoryView }, { ignoreDuplicateRegistrations: true });
940 } function __embind_register_std_string(rawType, name)
941 {
942 name = readLatin1String(name); const stdStringIsUTF8 = name === 'std::string';
943
944 registerType(rawType, { name, fromWireType(value)
945 {
946 const length = HEAPU32[value >> 2]; let str;
947
948 if (stdStringIsUTF8)
949 {
950 const endChar = HEAPU8[value + 4 + length]; let endCharSwap = 0;
951
952 if (endChar != 0) { endCharSwap = endChar; HEAPU8[value + 4 + length] = 0; } let decodeStartPtr = value + 4;
953
954 for (var i = 0; i <= length; ++i)
955 {
956 const currentBytePtr = value + 4 + i;
957
958 if (HEAPU8[currentBytePtr] == 0)
959 {
960 const stringSegment = UTF8ToString(decodeStartPtr);
961
962 if (str === undefined) { str = stringSegment; }
963 else { str += String.fromCharCode(0); str += stringSegment; }decodeStartPtr = currentBytePtr + 1;
964 }
965 } if (endCharSwap != 0) { HEAPU8[value + 4 + length] = endCharSwap; }
966 }
967 else
968 {
969 const a = new Array(length);
970
971 for (var i = 0; i < length; ++i) { a[i] = String.fromCharCode(HEAPU8[value + 4 + i]); }str = a.join('');
972 }_free(value);
973
974 return str;
975 }, toWireType(destructors, value)
976 {
977 if (value instanceof ArrayBuffer) { value = new Uint8Array(value); } let getLength; const valueIsOfTypeString = typeof value === 'string';
978
979 if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { throwBindingError('Cannot pass non-string to std::string'); } if (stdStringIsUTF8 && valueIsOfTypeString) { getLength = function () { return lengthBytesUTF8(value); }; }
980 else { getLength = function () { return value.length; }; } const length = getLength(); const ptr = _malloc(4 + length + 1);
981
982 HEAPU32[ptr >> 2] = length; if (stdStringIsUTF8 && valueIsOfTypeString) { stringToUTF8(value, ptr + 4, length + 1); }
983 else
984 if (valueIsOfTypeString)
985 {
986 for (var i = 0; i < length; ++i)
987 {
988 const charCode = value.charCodeAt(i);
989
990 if (charCode > 255) { _free(ptr); throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); }HEAPU8[ptr + 4 + i] = charCode;
991 }
992 }
993 else { for (var i = 0; i < length; ++i) { HEAPU8[ptr + 4 + i] = value[i]; } } if (destructors !== null) { destructors.push(_free, ptr); }
994
995 return ptr;
996 }, argPackAdvance: 8, readValueFromPointer: simpleReadValueFromPointer, destructorFunction(ptr) { _free(ptr); } });
997 } function __embind_register_std_wstring(rawType, charSize, name)

Callers

nothing calls this directly

Calls 2

readLatin1StringFunction · 0.70
registerTypeFunction · 0.70

Tested by

no test coverage detected