GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — ios/NativeScript/runtime/FunctionReference.cpp at main · NativeScript/ios Expand file tree/ Copy pathFunctionReference.cppMore file actions 72 lines (57 loc) · 2.27 KB / Copy pathFunctionReference.cppFile metadata and controls72 lines (57 loc) · 2.27 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 #include "FunctionReference.h" #include "Caches.h" #include "Constants.h" #include "Helpers.h" #include "ObjectManager.h" using namespace v8; namespace tns { void FunctionReference::Register(Local<Context> context, Local<Object> interop) { Isolate* isolate = v8::Isolate::GetCurrent(); Local<v8::Function> ctorFunc = FunctionReference::GetFunctionReferenceCtorFunc(context); bool success = interop ->Set(context, tns::ToV8String(isolate, "FunctionReference"), ctorFunc) .FromMaybe(false); tns::Assert(success, isolate); } Local<v8::Function> FunctionReference::GetFunctionReferenceCtorFunc( Local<Context> context) { Isolate* isolate = v8::Isolate::GetCurrent(); auto cache = Caches::Get(isolate); Persistent<v8::Function>* poFunctionReferenceCtor = cache->FunctionReferenceCtorFunc.get(); if (poFunctionReferenceCtor != nullptr) { return poFunctionReferenceCtor->Get(isolate); } Local<FunctionTemplate> ctorFuncTemplate = FunctionTemplate::New(isolate, FunctionReferenceConstructorCallback); ctorFuncTemplate->InstanceTemplate()->SetInternalFieldCount(1); ctorFuncTemplate->SetClassName(tns::ToV8String(isolate, "FunctionReference")); Local<v8::Function> ctorFunc; if (!ctorFuncTemplate->GetFunction(context).ToLocal(&ctorFunc)) { tns::Assert(false, isolate); } tns::SetValue(isolate, ctorFunc, new FunctionReferenceTypeWrapper()); cache->FunctionReferenceCtorFunc = std::make_unique<Persistent<v8::Function>>(isolate, ctorFunc); cache->FunctionReferenceCtorFunc->SetWrapperClassId( Constants::ClassTypes::DataWrapper); return ctorFunc; } void FunctionReference::FunctionReferenceConstructorCallback( const FunctionCallbackInfo<Value>& info) { Isolate* isolate = info.GetIsolate(); Local<Context> context = isolate->GetCurrentContext(); tns::Assert(info.Length() == 1, isolate); tns::Assert(info[0]->IsFunction(), isolate); Local<v8::Function> arg = info[0].As<v8::Function>(); std::shared_ptr<Persistent<v8::Value>> poArg = ObjectManager::Register(context, arg); FunctionReferenceWrapper* wrapper = new FunctionReferenceWrapper(poArg); tns::SetValue(isolate, arg, wrapper); info.GetReturnValue().Set(arg); } } // namespace tns |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |