wasmer-napi 0.702.0

NAPI library for Wasmer WebAssembly runtime
#include "internal/napi_function_callback_info.h"

napi_function_callback_info__::napi_function_callback_info__(
    const v8::FunctionCallbackInfo<v8::Value>& info,
    napi_callback_payload__* payload)
    : info_(info), payload_(payload) {}

size_t napi_function_callback_info__::argc() const {
  return static_cast<size_t>(info_.Length());
}

void napi_function_callback_info__::args(napi_value* argv, size_t argc) const {
  size_t i = 0;
  const size_t actual_argc = this->argc();
  const size_t copied_argc = (argc < actual_argc) ? argc : actual_argc;
  for (; i < copied_argc; ++i) {
    argv[i] = napi_v8_wrap_value(payload_->env, info_[static_cast<int>(i)]);
  }
  if (i < argc) {
    napi_value undefined =
        napi_v8_wrap_value(payload_->env, v8::Undefined(info_.GetIsolate()));
    for (; i < argc; ++i) {
      argv[i] = undefined;
    }
  }
}

napi_value napi_function_callback_info__::this_arg() const {
  return napi_v8_wrap_value(payload_->env, info_.This());
}

napi_value napi_function_callback_info__::new_target() const {
  if (info_.IsConstructCall()) {
    return napi_v8_wrap_value(payload_->env, info_.NewTarget());
  }
  return nullptr;
}

void* napi_function_callback_info__::data() const {
  return payload_->data;
}