| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | /********************************************************************* * NAN - Native Abstractions for Node.js * * Copyright (c) 2018 NAN contributors * * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md> ********************************************************************/#ifndef NAN_PERSISTENT_12_INL_H_#define NAN_PERSISTENT_12_INL_H_template<typename T, typename M> class Persistent :    public v8::Persistent<T, M> { public:  inline Persistent() : v8::Persistent<T, M>() {}  template<typename S> inline Persistent(v8::Local<S> that) :      v8::Persistent<T, M>(v8::Isolate::GetCurrent(), that) {}  template<typename S, typename M2>  inline  Persistent(const v8::Persistent<S, M2> &that) :  // NOLINT(runtime/explicit)      v8::Persistent<T, M2>(v8::Isolate::GetCurrent(), that) {}  inline void Reset() { v8::PersistentBase<T>::Reset(); }  template <typename S>  inline void Reset(const v8::Local<S> &other) {    v8::PersistentBase<T>::Reset(v8::Isolate::GetCurrent(), other);  }  template <typename S>  inline void Reset(const v8::PersistentBase<S> &other) {    v8::PersistentBase<T>::Reset(v8::Isolate::GetCurrent(), other);  }  template<typename P>  inline void SetWeak(    P *parameter    , typename WeakCallbackInfo<P>::Callback callback    , WeakCallbackType type); private:  inline T *operator*() const { return *PersistentBase<T>::persistent; }  template<typename S, typename M2>  inline void Copy(const Persistent<S, M2> &that) {    TYPE_CHECK(T, S);    this->Reset();    if (!that.IsEmpty()) {      this->Reset(that);      M::Copy(that, this);    }  }};#if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 4 ||                      \  (V8_MAJOR_VERSION == 4 && defined(V8_MINOR_VERSION) && V8_MINOR_VERSION >= 3))template<typename T>class Global : public v8::Global<T> { public:  inline Global() : v8::Global<T>() {}  template<typename S> inline Global(v8::Local<S> that) :    v8::Global<T>(v8::Isolate::GetCurrent(), that) {}  template<typename S>  inline  Global(const v8::PersistentBase<S> &that) :  // NOLINT(runtime/explicit)      v8::Global<S>(v8::Isolate::GetCurrent(), that) {}  inline void Reset() { v8::PersistentBase<T>::Reset(); }  template <typename S>  inline void Reset(const v8::Local<S> &other) {    v8::PersistentBase<T>::Reset(v8::Isolate::GetCurrent(), other);  }  template <typename S>  inline void Reset(const v8::PersistentBase<S> &other) {    v8::PersistentBase<T>::Reset(v8::Isolate::GetCurrent(), other);  }  template<typename P>  inline void SetWeak(    P *parameter    , typename WeakCallbackInfo<P>::Callback callback    , WeakCallbackType type) {    reinterpret_cast<Persistent<T>*>(this)->SetWeak(        parameter, callback, type);  }};#elsetemplate<typename T>class Global : public v8::UniquePersistent<T> { public:  inline Global() : v8::UniquePersistent<T>() {}  template<typename S> inline Global(v8::Local<S> that) :    v8::UniquePersistent<T>(v8::Isolate::GetCurrent(), that) {}  template<typename S>  inline  Global(const v8::PersistentBase<S> &that) :  // NOLINT(runtime/explicit)      v8::UniquePersistent<S>(v8::Isolate::GetCurrent(), that) {}  inline void Reset() { v8::PersistentBase<T>::Reset(); }  template <typename S>  inline void Reset(const v8::Local<S> &other) {    v8::PersistentBase<T>::Reset(v8::Isolate::GetCurrent(), other);  }  template <typename S>  inline void Reset(const v8::PersistentBase<S> &other) {    v8::PersistentBase<T>::Reset(v8::Isolate::GetCurrent(), other);  }  template<typename P>  inline void SetWeak(    P *parameter    , typename WeakCallbackInfo<P>::Callback callback    , WeakCallbackType type) {    reinterpret_cast<Persistent<T>*>(this)->SetWeak(        parameter, callback, type);  }};#endif#endif  // NAN_PERSISTENT_12_INL_H_
 |