| 1720 | , Nan::NAN_INDEX_QUERY_ARGS_TYPE info) |
| 1721 | |
| 1722 | class Callback { |
| 1723 | public: |
| 1724 | Callback() {} |
| 1725 | |
| 1726 | explicit Callback(const v8::Local<v8::Function> &fn) : handle_(fn) {} |
| 1727 | |
| 1728 | ~Callback() { |
| 1729 | handle_.Reset(); |
| 1730 | } |
| 1731 | |
| 1732 | bool operator==(const Callback &other) const { |
| 1733 | return handle_ == other.handle_; |
| 1734 | } |
| 1735 | |
| 1736 | bool operator!=(const Callback &other) const { |
| 1737 | return !operator==(other); |
| 1738 | } |
| 1739 | |
| 1740 | inline |
| 1741 | v8::Local<v8::Function> operator*() const { return GetFunction(); } |
| 1742 | |
| 1743 | NAN_DEPRECATED inline v8::Local<v8::Value> operator()( |
| 1744 | v8::Local<v8::Object> target |
| 1745 | , int argc = 0 |
| 1746 | , v8::Local<v8::Value> argv[] = 0) const { |
| 1747 | #if NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION |
| 1748 | v8::Isolate *isolate = v8::Isolate::GetCurrent(); |
| 1749 | # if NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION |
| 1750 | AsyncResource async("nan:Callback:operator()"); |
| 1751 | return Call_(isolate, target, argc, argv, &async) |
| 1752 | .FromMaybe(v8::Local<v8::Value>()); |
| 1753 | # else |
| 1754 | return Call_(isolate, target, argc, argv); |
| 1755 | # endif // NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION |
| 1756 | #else |
| 1757 | return Call_(target, argc, argv); |
| 1758 | #endif // NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION |
| 1759 | } |
| 1760 | |
| 1761 | NAN_DEPRECATED inline v8::Local<v8::Value> operator()( |
| 1762 | int argc = 0 |
| 1763 | , v8::Local<v8::Value> argv[] = 0) const { |
| 1764 | #if NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION |
| 1765 | v8::Isolate *isolate = v8::Isolate::GetCurrent(); |
| 1766 | v8::EscapableHandleScope scope(isolate); |
| 1767 | # if NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION |
| 1768 | AsyncResource async("nan:Callback:operator()"); |
| 1769 | return scope.Escape(Call_(isolate, isolate->GetCurrentContext()->Global(), |
| 1770 | argc, argv, &async) |
| 1771 | .FromMaybe(v8::Local<v8::Value>())); |
| 1772 | # else |
| 1773 | return scope.Escape( |
| 1774 | Call_(isolate, isolate->GetCurrentContext()->Global(), argc, argv)); |
| 1775 | # endif // NODE_MODULE_VERSION >= NODE_9_0_MODULE_VERSION |
| 1776 | #else |
| 1777 | v8::HandleScope scope; |
| 1778 | return scope.Close(Call_(v8::Context::GetCurrent()->Global(), argc, argv)); |
| 1779 | #endif // NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION |
no test coverage detected