| %insert(runtime) %{ |
| |
| // Note: since 3.19 there are new CallBack types, since 03.21.9 the old ones have been removed |
| #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031903) |
| typedef v8::InvocationCallback SwigV8FunctionCallback; |
| typedef v8::AccessorGetter SwigV8AccessorGetterCallback; |
| typedef v8::AccessorSetter SwigV8AccessorSetterCallback; |
| typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; |
| #elif (V8_MAJOR_VERSION-0) < 5 |
| typedef v8::FunctionCallback SwigV8FunctionCallback; |
| typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; |
| typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; |
| typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid; |
| #else |
| typedef v8::FunctionCallback SwigV8FunctionCallback; |
| typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; |
| typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; |
| typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid; |
| #endif |
| |
| /** |
| * Creates a class template for a class with specified initialization function. |
| */ |
| SWIGRUNTIME SWIGV8_FUNCTION_TEMPLATE SWIGV8_CreateClassTemplate(const char* symbol) { |
| SWIGV8_HANDLESCOPE_ESC(); |
| |
| v8::Local<v8::FunctionTemplate> class_templ = SWIGV8_FUNCTEMPLATE_NEW_VOID(); |
| class_templ->SetClassName(SWIGV8_SYMBOL_NEW(symbol)); |
| |
| SWIGV8_OBJECT_TEMPLATE inst_templ = class_templ->InstanceTemplate(); |
| inst_templ->SetInternalFieldCount(1); |
| |
| SWIGV8_OBJECT_TEMPLATE equals_templ = class_templ->PrototypeTemplate(); |
| equals_templ->Set(SWIGV8_SYMBOL_NEW("equals"), SWIGV8_FUNCTEMPLATE_NEW(_SWIGV8_wrap_equals)); |
| |
| SWIGV8_OBJECT_TEMPLATE cptr_templ = class_templ->PrototypeTemplate(); |
| cptr_templ->Set(SWIGV8_SYMBOL_NEW("getCPtr"), SWIGV8_FUNCTEMPLATE_NEW(_wrap_getCPtr)); |
| |
| SWIGV8_ESCAPE(class_templ); |
| } |
| |
| /** |
| * Registers a class method with given name for a given class template. |
| */ |
| SWIGRUNTIME void SWIGV8_AddMemberFunction(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, |
| SwigV8FunctionCallback _func) { |
| SWIGV8_OBJECT_TEMPLATE proto_templ = class_templ->PrototypeTemplate(); |
| proto_templ->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)); |
| } |
| |
| /** |
| * Registers a class property with given name for a given class template. |
| */ |
| SWIGRUNTIME void SWIGV8_AddMemberVariable(SWIGV8_FUNCTION_TEMPLATE class_templ, const char* symbol, |
| SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { |
| SWIGV8_OBJECT_TEMPLATE proto_templ = class_templ->InstanceTemplate(); |
| proto_templ->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); |
| } |
| |
| /** |
| * Registers a class method with given name for a given object. |
| */ |
| SWIGRUNTIME void SWIGV8_AddStaticFunction(SWIGV8_OBJECT obj, const char* symbol, |
| const SwigV8FunctionCallback& _func, v8::Local<v8::Context> context) { |
| #if (V8_MAJOR_VERSION-0) < 5 |
| obj->Set(SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction()); |
| #else |
| SWIGV8_MAYBE_CHECK(obj->Set(context, SWIGV8_SYMBOL_NEW(symbol), SWIGV8_FUNCTEMPLATE_NEW(_func)->GetFunction(context).ToLocalChecked())); |
| #endif |
| } |
| |
| /** |
| * Registers a class method with given name for a given object. |
| */ |
| SWIGRUNTIME void SWIGV8_AddStaticVariable(SWIGV8_OBJECT obj, const char* symbol, |
| SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter, |
| v8::Local<v8::Context> context) { |
| #if (V8_MAJOR_VERSION-0) < 5 |
| obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); |
| #else |
| SWIGV8_MAYBE_CHECK(obj->SetAccessor(context, SWIGV8_SYMBOL_NEW(symbol), getter, setter)); |
| #endif |
| } |
| |
| #if (V8_MAJOR_VERSION-0) < 5 |
| SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info) |
| #else |
| SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info) |
| #endif |
| { |
| char buffer[256]; |
| char msg[512]; |
| int res; |
| |
| #if (V8_MAJOR_VERSION-0) < 5 |
| property->WriteUtf8(buffer, 256); |
| res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); |
| #else |
| v8::Local<v8::String> sproperty; |
| if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) { |
| SWIGV8_WRITE_UTF8(sproperty, buffer, 256); |
| res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); |
| } |
| else { |
| res = -1; |
| } |
| #endif |
| |
| if(res<0) { |
| SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); |
| } else { |
| SWIG_exception(SWIG_ERROR, msg); |
| } |
| fail: ; |
| } |
| |
| %} // v8_helper_functions |