src: add MakeCallback() that takes an array index
authorBen Noordhuis <info@bnoordhuis.nl>
Thu, 15 Aug 2013 17:22:44 +0000 (19:22 +0200)
committerBen Noordhuis <info@bnoordhuis.nl>
Thu, 15 Aug 2013 17:33:06 +0000 (19:33 +0200)
Internal helper function for dispatching by array index rather than
named property.

src/node.cc
src/node_internals.h

index 7b1d843..1d2f905 100644 (file)
@@ -1087,6 +1087,23 @@ MakeCallback(const Handle<Object> object,
 }
 
 
+// Internal only.
+Handle<Value>
+MakeCallback(const Handle<Object> object,
+             uint32_t index,
+             int argc,
+             Handle<Value> argv[]) {
+  HandleScope scope(node_isolate);
+
+  Local<Function> callback = object->Get(index).As<Function>();
+  assert(callback->IsFunction());
+
+  if (using_domains)
+    return scope.Close(MakeDomainCallback(object, callback, argc, argv));
+  return scope.Close(MakeCallback(object, callback, argc, argv));
+}
+
+
 Handle<Value>
 MakeCallback(const Handle<Object> object,
              const Handle<String> symbol,
index 5e7e65c..ba110a5 100644 (file)
@@ -76,6 +76,12 @@ inline v8::Local<TypeName> PersistentToLocal(
     v8::Isolate* isolate,
     const v8::Persistent<TypeName>& persistent);
 
+v8::Handle<v8::Value> MakeCallback(
+    const v8::Handle<v8::Object> recv,
+    uint32_t index,
+    int argc,
+    v8::Handle<v8::Value>* argv);
+
 template <typename TypeName>
 v8::Handle<v8::Value> MakeCallback(
     const v8::Persistent<v8::Object>& recv,