aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChad Austin <chad@imvu.com>2013-04-01 17:42:50 -0700
committerJukka Jylänki <jujjyl@gmail.com>2013-04-12 14:26:59 +0300
commite30dd3017a318d1f5862bd3688679c687c66d621 (patch)
tree182a7adedcfa827133912a7d61a105d1e2cb81c1 /src
parent8b1b35d8e34496a81967b2d08e2f7900111bba5e (diff)
Restructure and generalize tuple accessors.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/embind/embind.js28
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);
}
});