#ifndef Reference_h #define Reference_h #include "DataWrapper.h" #include "Common.h" namespace tns { class Reference { public: static void Register(v8::Local context, v8::Local interop); static v8::Local FromPointer(v8::Local context, v8::Local type, void* handle); static v8::Local GetInteropReferenceCtorFunc(v8::Local context); static void* GetWrappedPointer(v8::Local context, v8::Local reference, const TypeEncoding* typeEncoding); private: struct DataPair { DataPair(const TypeEncoding* typeEncoding, void* data, size_t size): typeEncoding_(typeEncoding), data_(data), size_(size) { } const TypeEncoding* typeEncoding_; void* data_; size_t size_; }; static v8::Local GetReferredValue(v8::Local context, v8::Local value); static void ReferenceConstructorCallback(const v8::FunctionCallbackInfo& info); static void IndexedPropertyGetCallback(uint32_t index, const v8::PropertyCallbackInfo& info); static void IndexedPropertySetCallback(uint32_t index, v8::Local value, const v8::PropertyCallbackInfo& info); static void GetValueCallback(v8::Local name, const v8::PropertyCallbackInfo& info); static void SetValueCallback(v8::Local name, v8::Local value, const v8::PropertyCallbackInfo& info); static void RegisterToStringMethod(v8::Local context, v8::Local prototype); static DataPair GetTypeEncodingDataPair(v8::Local obj); }; } #endif /* Reference_h */