Skip to content

Commit 8a990fc

Browse files
authored
Pass func args as array in addition to vector, initializer list (#68)
1 parent 3e0ffa3 commit 8a990fc

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

napi-inl.h

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,52 +1234,57 @@ inline Value Function::Call(const std::vector<napi_value>& args) const {
12341234
return Call(Env().Undefined(), args);
12351235
}
12361236

1237+
inline Value Function::Call(size_t argc, const napi_value* args) const {
1238+
return Call(Env().Undefined(), argc, args);
1239+
}
1240+
12371241
inline Value Function::Call(napi_value recv, const std::initializer_list<napi_value>& args) const {
1238-
napi_value result;
1239-
napi_status status = napi_call_function(
1240-
_env, recv, _value, args.size(), args.begin(), &result);
1241-
NAPI_THROW_IF_FAILED(_env, status, Value());
1242-
return Value(_env, result);
1242+
return Call(recv, args.size(), args.begin());
12431243
}
12441244

12451245
inline Value Function::Call(napi_value recv, const std::vector<napi_value>& args) const {
1246+
return Call(recv, args.size(), args.data());
1247+
}
1248+
1249+
inline Value Function::Call(napi_value recv, size_t argc, const napi_value* args) const {
12461250
napi_value result;
12471251
napi_status status = napi_call_function(
1248-
_env, recv, _value, args.size(), args.data(), &result);
1252+
_env, recv, _value, argc, args, &result);
12491253
NAPI_THROW_IF_FAILED(_env, status, Value());
12501254
return Value(_env, result);
12511255
}
12521256

12531257
inline Value Function::MakeCallback(
12541258
napi_value recv, const std::initializer_list<napi_value>& args) const {
1255-
napi_value result;
1256-
napi_status status = napi_make_callback(
1257-
_env, recv, _value, args.size(), args.begin(), &result);
1258-
NAPI_THROW_IF_FAILED(_env, status, Value());
1259-
return Value(_env, result);
1259+
return MakeCallback(recv, args.size(), args.begin());
12601260
}
12611261

12621262
inline Value Function::MakeCallback(
12631263
napi_value recv, const std::vector<napi_value>& args) const {
1264+
return MakeCallback(recv, args.size(), args.data());
1265+
}
1266+
1267+
inline Value Function::MakeCallback(
1268+
napi_value recv, size_t argc, const napi_value* args) const {
12641269
napi_value result;
12651270
napi_status status = napi_make_callback(
1266-
_env, recv, _value, args.size(), args.data(), &result);
1271+
_env, recv, _value, argc, args, &result);
12671272
NAPI_THROW_IF_FAILED(_env, status, Value());
12681273
return Value(_env, result);
12691274
}
12701275

12711276
inline Object Function::New(const std::initializer_list<napi_value>& args) const {
1272-
napi_value result;
1273-
napi_status status = napi_new_instance(
1274-
_env, _value, args.size(), args.begin(), &result);
1275-
NAPI_THROW_IF_FAILED(_env, status, Object());
1276-
return Object(_env, result);
1277+
return New(args.size(), args.begin());
12771278
}
12781279

12791280
inline Object Function::New(const std::vector<napi_value>& args) const {
1281+
return New(args.size(), args.data());
1282+
}
1283+
1284+
inline Object Function::New(size_t argc, const napi_value* args) const {
12801285
napi_value result;
12811286
napi_status status = napi_new_instance(
1282-
_env, _value, args.size(), args.data(), &result);
1287+
_env, _value, argc, args, &result);
12831288
NAPI_THROW_IF_FAILED(_env, status, Object());
12841289
return Object(_env, result);
12851290
}

napi.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -796,14 +796,18 @@ namespace Napi {
796796

797797
Value Call(const std::initializer_list<napi_value>& args) const;
798798
Value Call(const std::vector<napi_value>& args) const;
799+
Value Call(size_t argc, const napi_value* args) const;
799800
Value Call(napi_value recv, const std::initializer_list<napi_value>& args) const;
800801
Value Call(napi_value recv, const std::vector<napi_value>& args) const;
802+
Value Call(napi_value recv, size_t argc, const napi_value* args) const;
801803

802804
Value MakeCallback(napi_value recv, const std::initializer_list<napi_value>& args) const;
803805
Value MakeCallback(napi_value recv, const std::vector<napi_value>& args) const;
806+
Value MakeCallback(napi_value recv, size_t argc, const napi_value* args) const;
804807

805808
Object New(const std::initializer_list<napi_value>& args) const;
806809
Object New(const std::vector<napi_value>& args) const;
810+
Object New(size_t argc, const napi_value* args) const;
807811
};
808812

809813
template <typename T>

0 commit comments

Comments
 (0)