diff options
author | Chad Austin <chad@imvu.com> | 2013-04-01 17:42:50 -0700 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-12 14:26:59 +0300 |
commit | e30dd3017a318d1f5862bd3688679c687c66d621 (patch) | |
tree | 182a7adedcfa827133912a7d61a105d1e2cb81c1 /src | |
parent | 8b1b35d8e34496a81967b2d08e2f7900111bba5e (diff) |
Restructure and generalize tuple accessors.
Diffstat (limited to 'src')
-rwxr-xr-x | src/embind/embind.js | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js index f850c73f..845bf98b 100755 --- a/src/embind/embind.js +++ b/src/embind/embind.js @@ -419,30 +419,34 @@ function __embind_register_tuple_element( function __embind_register_tuple_element_accessor( rawTupleType, - rawElementType, - rawStaticGetter, + getterReturnType, + getter, getterContext, - rawStaticSetter, + setterArgumentType, + setter, setterContext ) { var tupleType = requireRegisteredType(rawTupleType, 'tuple'); - rawStaticGetter = FUNCTION_TABLE[rawStaticGetter]; - rawStaticSetter = FUNCTION_TABLE[rawStaticSetter]; + getter = FUNCTION_TABLE[getter]; + setter = FUNCTION_TABLE[setter]; - whenDependentTypesAreResolved([], [rawElementType], function(elementType) { - elementType = elementType[0]; + // TODO: test incomplete registration of value tuples + whenDependentTypesAreResolved([], [getterReturnType, setterArgumentType], function(types) { + var getterReturnType = types[0]; + var setterArgumentType = types[1]; tupleType.elements.push({ read: function(ptr) { - return elementType.fromWireType(rawStaticGetter( - getterContext, - ptr)); + return getterReturnType.fromWireType( + getter( + getterContext, + ptr)); }, write: function(ptr, o) { var destructors = []; - rawStaticSetter( + setter( setterContext, ptr, - elementType.toWireType(destructors, o)); + setterArgumentType.toWireType(destructors, o)); runDestructors(destructors); } }); |