diff options
Diffstat (limited to 'src/embind/embind.js')
-rwxr-xr-x | src/embind/embind.js | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index 3daa4b01..16e29d9e 100755 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -470,27 +470,32 @@ function __embind_register_struct( } function __embind_register_struct_field( - rawStructType, + structType, fieldName, - rawFieldType, - rawGetter, - rawSetter, - context + getterReturnType, + getter, + getterContext, + setterArgumentType, + setter, + setterContext ) { - var structType = requireRegisteredType(rawStructType, 'struct'); + structType = requireRegisteredType(structType, 'struct'); fieldName = Pointer_stringify(fieldName); - rawGetter = FUNCTION_TABLE[rawGetter]; - rawSetter = FUNCTION_TABLE[rawSetter]; + getter = FUNCTION_TABLE[getter]; + setter = FUNCTION_TABLE[setter]; + // TODO: test incomplete registration of value structs - whenDependentTypesAreResolved([], [rawFieldType], function(fieldType) { - fieldType = fieldType[0]; + whenDependentTypesAreResolved([], [getterReturnType, setterArgumentType], function(types) { + var getterReturnType = types[0]; + var setterArgumentType = types[1]; structType.fields[fieldName] = { read: function(ptr) { - return fieldType.fromWireType(rawGetter(context, ptr)); + return getterReturnType.fromWireType( + getter(getterContext, ptr)); }, write: function(ptr, o) { var destructors = []; - rawSetter(context, ptr, fieldType.toWireType(destructors, o)); + setter(setterContext, ptr, setterArgumentType.toWireType(destructors, o)); runDestructors(destructors); } }; |