From: <ne...@us...> - 2012-07-23 16:08:04
|
Revision: 13379 http://swig.svn.sourceforge.net/swig/?rev=13379&view=rev Author: neha1 Date: 2012-07-23 16:07:54 +0000 (Mon, 23 Jul 2012) Log Message: ----------- Fixed input marshalling to resolve bug revealed by test cpp_enum. From: Neha Narang <nar...@gm...> Modified Paths: -------------- branches/gsoc2012-javascript/Source/Modules/javascript_jsc.cxx branches/gsoc2012-javascript/Source/Modules/javascript_jsc.h Modified: branches/gsoc2012-javascript/Source/Modules/javascript_jsc.cxx =================================================================== --- branches/gsoc2012-javascript/Source/Modules/javascript_jsc.cxx 2012-07-23 16:07:26 UTC (rev 13378) +++ branches/gsoc2012-javascript/Source/Modules/javascript_jsc.cxx 2012-07-23 16:07:54 UTC (rev 13379) @@ -28,12 +28,12 @@ * supplied typemaps. * --------------------------------------------------------------------- */ -void JSCEmitter::marshalInputArgs(ParmList *parms, Wrapper *wrapper, MarshallingMode mode, bool is_member) { +void JSCEmitter::marshalInputArgs(ParmList *parms, Wrapper *wrapper, MarshallingMode mode, bool is_member, bool is_static) { String *tm; Parm *p; int startIdx = 0; - if (is_member) + if (is_member && !is_static) startIdx = 1; @@ -45,7 +45,7 @@ switch (mode) { case Getter: case Function: - if (is_member && i == 0) { + if (is_member && !is_static && i == 0) { Printv(arg, "thisObject", 0); } else { Printf(arg, "argv[%d]", i - startIdx); @@ -53,14 +53,14 @@ break; case Setter: - if (is_member && i == 0) { + if (is_member && !is_static && i == 0) { Printv(arg, "thisObject", 0); } else { Printv(arg, "value", 0); - } + } break; case Ctor: - Printf(arg, "argv[%d]", i); + Printf(arg, "argv[%d]"); break; default: throw "Illegal state."; @@ -428,6 +428,7 @@ int JSCEmitter::emitGetter(Node *n, bool is_member) { Template t_getter(getTemplate("JS_getproperty")); + bool is_static = Equal(Getattr(n, "storage"), "static"); String *name = Getattr(n, "wrap:name"); String *wrap_name = Swig_name_wrapper(name); @@ -454,6 +455,7 @@ int JSCEmitter::emitSetter(Node *n, bool is_member) { Template t_setter(getTemplate("JS_setproperty")); + bool is_static = Equal(Getattr(n, "storage"), "static"); String *name = Getattr(n, "wrap:name"); String *wrap_name = Swig_name_wrapper(name); @@ -529,6 +531,7 @@ int JSCEmitter::emitFunction(Node *n, bool is_member) { Template t_function(getTemplate("JS_functionwrapper")); + bool is_static = Equal(Getattr(n, "storage"), "static"); bool is_overloaded = GetFlag(n, "sym:overloaded"); String *name = Getattr(n, "sym:name"); Modified: branches/gsoc2012-javascript/Source/Modules/javascript_jsc.h =================================================================== --- branches/gsoc2012-javascript/Source/Modules/javascript_jsc.h 2012-07-23 16:07:26 UTC (rev 13378) +++ branches/gsoc2012-javascript/Source/Modules/javascript_jsc.h 2012-07-23 16:07:54 UTC (rev 13379) @@ -53,7 +53,7 @@ virtual int emitSetter(Node *n, bool is_member); - void marshalInputArgs(ParmList *parms, Wrapper *wrapper, MarshallingMode mode, bool is_member); + void marshalInputArgs(ParmList *parms, Wrapper *wrapper, MarshallingMode mode, bool is_member, bool is_static = false); void marshalOutput(Node *n, String *actioncode, Wrapper *wrapper); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |