diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/embind/embind.js | 61 | ||||
-rwxr-xr-x | src/embind/emval.js | 14 |
2 files changed, 46 insertions, 29 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index 81af76db..9afbf2fb 100755 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -1,7 +1,7 @@ /*global Module*/ /*global _malloc, _free, _memcpy*/ /*global FUNCTION_TABLE, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32*/ -/*global Pointer_stringify*/ +/*global readLatin1String*/ /*global __emval_register, _emval_handle_array, __emval_decref*/ /*global ___getTypeName*/ @@ -223,9 +223,26 @@ function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverter } } +var __charCodes = []; + +function readLatin1String(ptr) { + if (__charCodes.length === 0) { + for (var charCodeI = 0; charCodeI < 127; charCodeI++) { + __charCodes.push(String.fromCharCode(charCodeI)); + } + } + + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += __charCodes[HEAPU8[c++]]; + } + return ret; +} + function getTypeName(type) { var ptr = ___getTypeName(type); - var rv = Pointer_stringify(ptr); + var rv = readLatin1String(ptr); _free(ptr); return rv; } @@ -247,7 +264,7 @@ function requireRegisteredType(rawType, humanName) { } function __embind_register_void(rawType, name) { - name = Pointer_stringify(name); + name = readLatin1String(name); registerType(rawType, { name: name, fromWireType: function() { @@ -257,7 +274,7 @@ function __embind_register_void(rawType, name) { } function __embind_register_bool(rawType, name, trueValue, falseValue) { - name = Pointer_stringify(name); + name = readLatin1String(name); registerType(rawType, { name: name, fromWireType: function(wt) { @@ -274,7 +291,7 @@ function __embind_register_bool(rawType, name, trueValue, falseValue) { // When converting a number from JS to C++ side, the valid range of the number is // [minRange, maxRange], inclusive. function __embind_register_integer(primitiveType, name, minRange, maxRange) { - name = Pointer_stringify(name); + name = readLatin1String(name); if (maxRange === -1) { // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come out as 'i32 -1'. Always treat those as max u32. maxRange = 4294967295; } @@ -300,7 +317,7 @@ function __embind_register_integer(primitiveType, name, minRange, maxRange) { } function __embind_register_float(rawType, name) { - name = Pointer_stringify(name); + name = readLatin1String(name); registerType(rawType, { name: name, fromWireType: function(value) { @@ -318,7 +335,7 @@ function __embind_register_float(rawType, name) { } function __embind_register_std_string(rawType, name) { - name = Pointer_stringify(name); + name = readLatin1String(name); registerType(rawType, { name: name, fromWireType: function(value) { @@ -350,7 +367,7 @@ function __embind_register_std_string(rawType, name) { } function __embind_register_std_wstring(rawType, charSize, name) { - name = Pointer_stringify(name); + name = readLatin1String(name); var HEAP, shift; if (charSize === 2) { HEAP = HEAPU16; @@ -387,7 +404,7 @@ function __embind_register_std_wstring(rawType, charSize, name) { } function __embind_register_emval(rawType, name) { - name = Pointer_stringify(name); + name = readLatin1String(name); registerType(rawType, { name: name, fromWireType: function(handle) { @@ -432,7 +449,7 @@ function makeInvoker(name, argCount, argTypes, invoker, fn) { function __embind_register_function(name, argCount, rawArgTypesAddr, rawInvoker, fn) { var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - name = Pointer_stringify(name); + name = readLatin1String(name); rawInvoker = FUNCTION_TABLE[rawInvoker]; exposePublicSymbol(name, function() { @@ -449,7 +466,7 @@ var tupleRegistrations = {}; function __embind_register_tuple(rawType, name, rawConstructor, rawDestructor) { tupleRegistrations[rawType] = { - name: Pointer_stringify(name), + name: readLatin1String(name), rawConstructor: FUNCTION_TABLE[rawConstructor], rawDestructor: FUNCTION_TABLE[rawDestructor], elements: [], @@ -538,7 +555,7 @@ function __embind_register_struct( rawDestructor ) { structRegistrations[rawType] = { - name: Pointer_stringify(name), + name: readLatin1String(name), rawConstructor: FUNCTION_TABLE[rawConstructor], rawDestructor: FUNCTION_TABLE[rawDestructor], fields: [], @@ -556,7 +573,7 @@ function __embind_register_struct_field( setterContext ) { structRegistrations[structType].fields.push({ - fieldName: Pointer_stringify(fieldName), + fieldName: readLatin1String(fieldName), getterReturnType: getterReturnType, getter: FUNCTION_TABLE[getter], getterContext: getterContext, @@ -913,7 +930,7 @@ function __embind_register_class( name, rawDestructor ) { - name = Pointer_stringify(name); + name = readLatin1String(name); rawDestructor = FUNCTION_TABLE[rawDestructor]; getActualType = FUNCTION_TABLE[getActualType]; upcast = FUNCTION_TABLE[upcast]; @@ -1097,7 +1114,7 @@ function __embind_register_class_function( context ) { var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - methodName = Pointer_stringify(methodName); + methodName = readLatin1String(methodName); rawInvoker = FUNCTION_TABLE[rawInvoker]; whenDependentTypesAreResolved([], [rawClassType], function(classType) { @@ -1163,7 +1180,7 @@ function __embind_register_class_class_function( fn ) { var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - methodName = Pointer_stringify(methodName); + methodName = readLatin1String(methodName); rawInvoker = FUNCTION_TABLE[rawInvoker]; whenDependentTypesAreResolved([], [rawClassType], function(classType) { classType = classType[0]; @@ -1209,7 +1226,7 @@ function __embind_register_class_property( setter, setterContext ) { - fieldName = Pointer_stringify(fieldName); + fieldName = readLatin1String(fieldName); getter = FUNCTION_TABLE[getter]; setter = FUNCTION_TABLE[setter]; @@ -1274,7 +1291,7 @@ function __embind_register_smart_ptr( rawShare, rawDestructor ) { - name = Pointer_stringify(name); + name = readLatin1String(name); rawGetPointee = FUNCTION_TABLE[rawGetPointee]; rawConstructor = FUNCTION_TABLE[rawConstructor]; rawShare = FUNCTION_TABLE[rawShare]; @@ -1304,7 +1321,7 @@ function __embind_register_enum( rawType, name ) { - name = Pointer_stringify(name); + name = readLatin1String(name); function constructor() { } @@ -1329,7 +1346,7 @@ function __embind_register_enum_value( enumValue ) { var enumType = requireRegisteredType(rawEnumType, 'enum'); - name = Pointer_stringify(name); + name = readLatin1String(name); var Enum = enumType.constructor; @@ -1347,7 +1364,7 @@ function __embind_register_interface( rawConstructor, rawDestructor ) { - name = Pointer_stringify(name); + name = readLatin1String(name); rawConstructor = FUNCTION_TABLE[rawConstructor]; rawDestructor = FUNCTION_TABLE[rawDestructor]; @@ -1365,7 +1382,7 @@ function __embind_register_interface( } function __embind_register_constant(name, type, value) { - name = Pointer_stringify(name); + name = readLatin1String(name); whenDependentTypesAreResolved([], [type], function(type) { type = type[0]; Module[name] = type.fromWireType(value); diff --git a/src/embind/emval.js b/src/embind/emval.js index 037ce47d..c4f06503 100755 --- a/src/embind/emval.js +++ b/src/embind/emval.js @@ -1,6 +1,6 @@ /*global Module*/ /*global HEAP32*/ -/*global Pointer_stringify, writeStringToMemory*/ +/*global readLatin1String, writeStringToMemory*/ /*global requireRegisteredType*/ var _emval_handle_array = []; @@ -74,7 +74,7 @@ function __emval_null() { } function __emval_new_cstring(v) { - return __emval_register(Pointer_stringify(v)); + return __emval_register(readLatin1String(v)); } function __emval_take_value(type, v) { @@ -127,12 +127,12 @@ function __emval_new(handle, argCount, argTypes) { var global = (function(){return Function;})()('return this')(); function __emval_get_global(name) { - name = Pointer_stringify(name); + name = readLatin1String(name); return __emval_register(global[name]); } function __emval_get_module_property(name) { - name = Pointer_stringify(name); + name = readLatin1String(name); return __emval_register(Module[name]); } @@ -173,7 +173,7 @@ function __emval_call(handle, argCount, argTypes) { } function __emval_call_method(handle, name, argCount, argTypes) { - name = Pointer_stringify(name); + name = readLatin1String(name); var args = parseParameters( argCount, @@ -185,7 +185,7 @@ function __emval_call_method(handle, name, argCount, argTypes) { } function __emval_call_void_method(handle, name, argCount, argTypes) { - name = Pointer_stringify(name); + name = readLatin1String(name); var args = parseParameters( argCount, @@ -196,6 +196,6 @@ function __emval_call_void_method(handle, name, argCount, argTypes) { } function __emval_has_function(handle, name) { - name = Pointer_stringify(name); + name = readLatin1String(name); return _emval_handle_array[handle].value[name] instanceof Function; } |