Fix regressions of latest commits.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/oliverb-javascript-v8@13828 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
9b06144d39
commit
217ffb11d0
2 changed files with 28 additions and 17 deletions
|
|
@ -11,13 +11,10 @@
|
||||||
JSObjectRef $jswrapper(JSContextRef context, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception)
|
JSObjectRef $jswrapper(JSContextRef context, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception)
|
||||||
{
|
{
|
||||||
$jslocals
|
$jslocals
|
||||||
|
|
||||||
if(argc != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper.");
|
if(argc != $jsargcount) SWIG_exception_fail(SWIG_ERROR, "Illegal number of arguments for $jswrapper.");
|
||||||
|
|
||||||
$jscode
|
$jscode
|
||||||
|
|
||||||
return SWIG_JSC_NewPointerObj(context, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN);
|
return SWIG_JSC_NewPointerObj(context, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN);
|
||||||
|
|
||||||
goto fail;
|
goto fail;
|
||||||
fail:
|
fail:
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
@ -63,6 +60,20 @@ JSObjectRef $jswrapper(JSContextRef context, JSObjectRef ctorObject,
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
%fragment ("js_overloaded_ctor", "templates")
|
||||||
|
%{
|
||||||
|
JSObjectRef $jswrapper(JSContextRef context, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception)
|
||||||
|
{
|
||||||
|
$jslocals
|
||||||
|
$jscode
|
||||||
|
return SWIG_JSC_NewPointerObj(context, result, SWIGTYPE_$jsmangledtype, SWIG_POINTER_OWN);
|
||||||
|
|
||||||
|
goto fail;
|
||||||
|
fail:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* js_ctor_dispatch_case: template for a dispatch case for calling an overloaded ctor.
|
* js_ctor_dispatch_case: template for a dispatch case for calling an overloaded ctor.
|
||||||
* - $jsargcount: number of arguments of called ctor
|
* - $jsargcount: number of arguments of called ctor
|
||||||
|
|
|
||||||
|
|
@ -1075,18 +1075,16 @@ int JSEmitter::emitFunctionDispatcher(Node *n, bool /*is_member */ ) {
|
||||||
|
|
||||||
void JSEmitter::registerProxyType(SwigType* type) {
|
void JSEmitter::registerProxyType(SwigType* type) {
|
||||||
SwigType *ftype = SwigType_typedef_resolve_all(type);
|
SwigType *ftype = SwigType_typedef_resolve_all(type);
|
||||||
|
if(Language::instance()->classLookup(ftype)) return;
|
||||||
|
|
||||||
|
// TODO: confused... more try and error... understand and fix eventually
|
||||||
|
SwigType *p_ftype = SwigType_add_pointer(ftype);
|
||||||
|
|
||||||
// register undefined wrappers
|
// register undefined wrappers
|
||||||
int needs_proxy= (SwigType_ispointer(ftype)
|
SwigType_remember_clientdata(p_ftype, 0);
|
||||||
|| SwigType_isarray(ftype) || SwigType_isreference(ftype))
|
Setattr(undefined_types, SwigType_manglestr(p_ftype), p_ftype);
|
||||||
&& !(Language::instance()->classLookup(ftype));
|
|
||||||
if (needs_proxy) {
|
|
||||||
SwigType_remember_clientdata(ftype, 0);
|
|
||||||
Setattr(undefined_types, SwigType_manglestr(ftype), ftype);
|
|
||||||
} else {
|
|
||||||
Delete(ftype);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Delete(ftype);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JSEmitter::emitInputTypemap(Node *n, Parm *p, Wrapper *wrapper, String *arg) {
|
void JSEmitter::emitInputTypemap(Node *n, Parm *p, Wrapper *wrapper, String *arg) {
|
||||||
|
|
@ -1119,7 +1117,9 @@ void JSEmitter::marshalOutput(Node *n, Wrapper *wrapper, String *actioncode, co
|
||||||
if(cresult == 0) cresult = defaultResultName;
|
if(cresult == 0) cresult = defaultResultName;
|
||||||
|
|
||||||
tm = Swig_typemap_lookup_out("out", n, cresult, wrapper, actioncode);
|
tm = Swig_typemap_lookup_out("out", n, cresult, wrapper, actioncode);
|
||||||
if(GetFlag(n, "feature:new")) {
|
bool should_own = GetFlag(n, "feature:new");
|
||||||
|
bool needs_proxy = GetFlag(n, "tmap:out:SWIGTYPE");
|
||||||
|
if(needs_proxy) {
|
||||||
registerProxyType(type);
|
registerProxyType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1127,7 +1127,7 @@ void JSEmitter::marshalOutput(Node *n, Wrapper *wrapper, String *actioncode, co
|
||||||
Replaceall(tm, "$result", "jsresult");
|
Replaceall(tm, "$result", "jsresult");
|
||||||
Replaceall(tm, "$objecttype", Swig_scopename_last(SwigType_str(SwigType_strip_qualifiers(type), 0)));
|
Replaceall(tm, "$objecttype", Swig_scopename_last(SwigType_str(SwigType_strip_qualifiers(type), 0)));
|
||||||
|
|
||||||
if (GetFlag(n, "feature:new")) {
|
if (should_own) {
|
||||||
Replaceall(tm, "$owner", "SWIG_POINTER_OWN");
|
Replaceall(tm, "$owner", "SWIG_POINTER_OWN");
|
||||||
} else {
|
} else {
|
||||||
Replaceall(tm, "$owner", "0");
|
Replaceall(tm, "$owner", "0");
|
||||||
|
|
@ -1985,10 +1985,10 @@ int V8Emitter::emitNamespaces() {
|
||||||
void V8Emitter::emitUndefined() {
|
void V8Emitter::emitUndefined() {
|
||||||
Iterator ki;
|
Iterator ki;
|
||||||
for (ki = First(undefined_types); ki.item; ki = Next(ki)) {
|
for (ki = First(undefined_types); ki.item; ki = Next(ki)) {
|
||||||
String *mangled_name = ki.key;
|
String *mangled_name = NewStringf("SWIGTYPE%s", ki.key);
|
||||||
SwigType *type = ki.item;
|
SwigType *type = ki.item;
|
||||||
String *dtor = Swig_name_destroy("", mangled_name);
|
String *dtor = Swig_name_destroy("", mangled_name);
|
||||||
String *type_mangled = SwigType_manglestr(type);
|
String *type_mangled = ki.key;
|
||||||
String *ctype = SwigType_lstr(type, "");
|
String *ctype = SwigType_lstr(type, "");
|
||||||
|
|
||||||
String *free = NewString("");
|
String *free = NewString("");
|
||||||
|
|
@ -2018,9 +2018,9 @@ void V8Emitter::emitUndefined() {
|
||||||
.replace(T_DTOR, dtor)
|
.replace(T_DTOR, dtor)
|
||||||
.pretty_print(f_init_class_templates);
|
.pretty_print(f_init_class_templates);
|
||||||
|
|
||||||
|
Delete(mangled_name);
|
||||||
Delete(dtor);
|
Delete(dtor);
|
||||||
Delete(free);
|
Delete(free);
|
||||||
Delete(type_mangled);
|
|
||||||
Delete(ctype);
|
Delete(ctype);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue