// // Created by Osei Fortune on 15/011/2023. // #pragma once #include #include "ada/ada.h" #include "Common.h" using namespace ada; namespace tns { class URLImpl { public: URLImpl(url_aggregator url); url_aggregator *GetURL(); static void Init(v8::Isolate* isolate, v8::Local globalTemplate); static URLImpl *GetPointer(v8::Local object); static v8::Local GetCtor(v8::Isolate *isolate); static void Ctor(const v8::FunctionCallbackInfo &args); static void GetHash(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetHash(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetHost(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetHost(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetHostName(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetHostName(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetHref(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetHref(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetOrigin(v8::Local name, const v8::PropertyCallbackInfo &info); static void GetPassword(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetPassword(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetPathName(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetPathName(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetPort(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetPort(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetProtocol(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetProtocol(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetSearch(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetSearch(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void GetUserName(v8::Local name, const v8::PropertyCallbackInfo &info); static void SetUserName(v8::Local property, v8::Local value, const v8::PropertyCallbackInfo &info); static void ToString(const v8::FunctionCallbackInfo &args); static void CanParse(const v8::FunctionCallbackInfo &args); void BindFinalizer(v8::Isolate *isolate, const v8::Local &object) { v8::HandleScope scopedHandle(isolate); weakHandle_.Reset(isolate, object); weakHandle_.SetWeak(this, Finalizer, v8::WeakCallbackType::kParameter); } static void Finalizer(const v8::WeakCallbackInfo &data) { auto *pThis = data.GetParameter(); pThis->weakHandle_.Reset(); delete pThis; } private: url_aggregator url_; v8::Global weakHandle_; }; }