Skip to content

Commit

Permalink
Add Function::Call wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
kkoopa committed Jan 9, 2016
1 parent 222d0a8 commit 4c15747
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 1 deletion.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ The `Nan::MaybeLocal` and `Nan::Maybe` types are monads that encapsulate `v8::Lo
- <a href="doc/maybe_types.md#api_nan_nothing"><b><code>Nan::Nothing</code></b></a>
- <a href="doc/maybe_types.md#api_nan_just"><b><code>Nan::Just</code></b></a>
* **Maybe Helpers**
- <a href="doc/maybe_types.md#api_nan_call"><b><code>Nan::Call()</code></b></a>
- <a href="doc/maybe_types.md#api_nan_to_detail_string"><b><code>Nan::ToDetailString()</code></b></a>
- <a href="doc/maybe_types.md#api_nan_to_array_index"><b><code>Nan::ToArrayIndex()</code></b></a>
- <a href="doc/maybe_types.md#api_nan_equals"><b><code>Nan::Equals()</code></b></a>
Expand Down Expand Up @@ -290,7 +291,7 @@ The hooks to access V8 internals—including GC and statistics—are different a
- <a href="doc/v8_misc.md#api_nan_get_current_context"><b><code>Nan::GetCurrentContext()</code></b></a>
- <a href="doc/v8_misc.md#api_nan_set_isolate_data"><b><code>Nan::SetIsolateData()</code></b></a>
- <a href="doc/v8_misc.md#api_nan_get_isolate_data"><b><code>Nan::GetIsolateData()</code></b></a>
- <a href="doc/v8_misc.md#api_nan_typedarray_contents"><b><code>Nan::TypedArrayContents</code></b></a>
- <a href="doc/v8_misc.md#api_nan_typedarray_contents"><b><code>Nan::TypedArrayContents<T></code></b></a>


### Miscellaneous Node Helpers
Expand Down
12 changes: 12 additions & 0 deletions doc/maybe_types.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ The `Nan::MaybeLocal` and `Nan::Maybe` types are monads that encapsulate `v8::Lo
- <a href="#api_nan_nothing"><b><code>Nan::Nothing</code></b></a>
- <a href="#api_nan_just"><b><code>Nan::Just</code></b></a>
* **Maybe Helpers**
- <a href="#api_nan_call"><b><code>Nan::Call()</code></b></a>
- <a href="#api_nan_to_detail_string"><b><code>Nan::ToDetailString()</code></b></a>
- <a href="#api_nan_to_array_index"><b><code>Nan::ToArrayIndex()</code></b></a>
- <a href="#api_nan_equals"><b><code>Nan::Equals()</code></b></a>
Expand Down Expand Up @@ -113,6 +114,17 @@ Construct a `Nan::Maybe` type representing _just_ a value.
template<typename T> Nan::Maybe<T> Nan::Just(const T &t);
```
<a name="api_nan_call"></a>
### Nan::Call()
A helper method for calling [`v8::Function#Call()`](https://v8docs.nodesource.com/io.js-3.0/d5/d54/classv8_1_1_function.html#a468a89f737af0612db10132799c827c0) in a way compatible across supported versions of V8.
Signature:
```c++
Nan::MaybeLocal<v8::Value> Nan::Call(v8::Local<v8::Function> fun, v8::Local<v8::Object> recv, int argc, v8::Local<v8::Value> argv[]);
```


<a name="api_nan_to_detail_string"></a>
### Nan::ToDetailString()
Expand Down
8 changes: 8 additions & 0 deletions nan_maybe_43_inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -220,4 +220,12 @@ NAN_INLINE MaybeLocal<v8::Object> CloneElementAt(
return array->CloneElementAt(GetCurrentContext(), index);
}

NAN_INLINE MaybeLocal<v8::Value> Call(
v8::Local<v8::Function> fun
, v8::Local<v8::Object> recv
, int argc
, v8::Local<v8::Value> argv[]) {
return fun->Call(GetCurrentContext(), recv, argc, argv);
}

#endif // NAN_MAYBE_43_INL_H_
8 changes: 8 additions & 0 deletions nan_maybe_pre_43_inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,12 @@ NAN_INLINE MaybeLocal<v8::Object> CloneElementAt(
return MaybeLocal<v8::Object>(array->CloneElementAt(index));
}

NAN_INLINE MaybeLocal<v8::Value> Call(
v8::Local<v8::Function> fun
, v8::Local<v8::Object> recv
, int argc
, v8::Local<v8::Value> argv[]) {
return MaybeLocal<v8::Value>(fun->Call(recv, argc, argv));
}

#endif // NAN_MAYBE_PRE_43_INL_H_

0 comments on commit 4c15747

Please sign in to comment.