wasmer-napi 0.702.0-alpha.3

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

#include "internal/napi_env.h"

napi_env_cleanup_hook__::napi_env_cleanup_hook__(napi_env env, napi_cleanup_hook hook, void *arg)
    : env_{env},
      hook_{hook},
      arg_{arg}
{
}

napi_env_cleanup_hook__::~napi_env_cleanup_hook__()
{
  env_ = nullptr;
  hook_ = nullptr;
  arg_ = nullptr;
}

napi_env napi_env_cleanup_hook__::env() const
{
  return env_;
}

napi_env_cleanup_hook__ *napi_env_cleanup_hook__::create(napi_env env, napi_cleanup_hook hook, void *arg)
{
  if (env == nullptr || env->context() == nullptr || hook == nullptr)
    return nullptr;
  return env->create_cleanup_hook(hook, arg);
}

void napi_env_cleanup_hook__::destroy(napi_env_cleanup_hook__ *entry)
{
  if (entry == nullptr)
    return;

  napi_env env = entry->env_;
  if (env != nullptr)
    env->destroy_cleanup_hook(entry);
}

void napi_env_cleanup_hook__::run() const
{
  if (hook_ != nullptr)
    hook_(arg_);
}

bool napi_env_cleanup_hook__::matches(napi_cleanup_hook hook, void *arg) const
{
  return hook_ == hook && arg_ == arg;
}