mirror of https://github.com/swig/swig
Fix wrapping of references/pointers and qualifiers to member pointers
Also fix Go wrapping of member const function pointers.
This commit is contained in:
parent
cf7d53599c
commit
72ba741d1c
|
@ -7,7 +7,7 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
||||||
Version 3.0.13 (in progress)
|
Version 3.0.13 (in progress)
|
||||||
============================
|
============================
|
||||||
|
|
||||||
2017-03-10: wsfulton
|
2017-03-16: wsfulton
|
||||||
Add support for member const function pointers such as:
|
Add support for member const function pointers such as:
|
||||||
|
|
||||||
int fn(short (Funcs::* parm)(bool)) const;
|
int fn(short (Funcs::* parm)(bool)) const;
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
%module member_funcptr_galore
|
%module member_funcptr_galore
|
||||||
|
|
||||||
|
%warnfilter(SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) extra2;
|
||||||
|
%warnfilter(SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) extra3;
|
||||||
|
%warnfilter(SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) pp2;
|
||||||
|
%warnfilter(SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) pp3;
|
||||||
|
%warnfilter(SWIGWARN_TYPEMAP_SWIGTYPELEAK_MSG) pp5;
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#if defined(__SUNPRO_CC)
|
#if defined(__SUNPRO_CC)
|
||||||
#pragma error_messages (off, badargtype2w) /* Formal argument ... is being passed extern "C" ... */
|
#pragma error_messages (off, badargtype2w) /* Formal argument ... is being passed extern "C" ... */
|
||||||
|
@ -185,7 +191,6 @@ int MemberFuncPtrs::qqq5(short (Funcs::* & qq5)(bool)) const { return 0; }
|
||||||
int MemberFuncPtrs::qqq6(short (Funcs::* const qq6)(bool)) const { return 0; }
|
int MemberFuncPtrs::qqq6(short (Funcs::* const qq6)(bool)) const { return 0; }
|
||||||
int MemberFuncPtrs::qqq7(short (Funcs::* const& qq7)(bool)) const { return 0; }
|
int MemberFuncPtrs::qqq7(short (Funcs::* const& qq7)(bool)) const { return 0; }
|
||||||
|
|
||||||
#if !defined(SWIGGO)
|
|
||||||
// member function pointer variables
|
// member function pointer variables
|
||||||
short (Funcs::* pp1)(bool) = &Funcs::FF;
|
short (Funcs::* pp1)(bool) = &Funcs::FF;
|
||||||
|
|
||||||
|
@ -199,5 +204,4 @@ short (Funcs::* *const& pp4)(bool) = extra4;
|
||||||
short (Funcs::* & pp5)(bool) = pp1;
|
short (Funcs::* & pp5)(bool) = pp1;
|
||||||
short (Funcs::* const pp6)(bool) = &Funcs::FF;
|
short (Funcs::* const pp6)(bool) = &Funcs::FF;
|
||||||
short (Funcs::* const& pp7)(bool) = pp1;
|
short (Funcs::* const& pp7)(bool) = pp1;
|
||||||
#endif
|
|
||||||
%}
|
%}
|
||||||
|
|
|
@ -48,24 +48,18 @@ public:
|
||||||
typedef double (Shape::*PerimeterFunc_td)(void);
|
typedef double (Shape::*PerimeterFunc_td)(void);
|
||||||
|
|
||||||
extern double do_op(Shape *s, double (Shape::*m)(void));
|
extern double do_op(Shape *s, double (Shape::*m)(void));
|
||||||
#if !defined(SWIGGO)
|
|
||||||
extern double do_op_td(Shape *s, PerimeterFunc_td m);
|
extern double do_op_td(Shape *s, PerimeterFunc_td m);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Functions that return member pointers */
|
/* Functions that return member pointers */
|
||||||
|
|
||||||
extern double (Shape::*areapt())(void);
|
extern double (Shape::*areapt())(void);
|
||||||
extern double (Shape::*perimeterpt())(void);
|
extern double (Shape::*perimeterpt())(void);
|
||||||
#if !defined(SWIGGO)
|
|
||||||
extern PerimeterFunc_td perimeterpt_td();
|
extern PerimeterFunc_td perimeterpt_td();
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Global variables that are member pointers */
|
/* Global variables that are member pointers */
|
||||||
extern double (Shape::*areavar)(void);
|
extern double (Shape::*areavar)(void);
|
||||||
extern double (Shape::*perimetervar)(void);
|
extern double (Shape::*perimetervar)(void);
|
||||||
#if !defined(SWIGGO)
|
|
||||||
extern PerimeterFunc_td perimetervar_td;
|
extern PerimeterFunc_td perimetervar_td;
|
||||||
#endif
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%{
|
%{
|
||||||
|
|
|
@ -49,24 +49,18 @@ public:
|
||||||
typedef double (Shape::*PerimeterFunc_td)(void) const;
|
typedef double (Shape::*PerimeterFunc_td)(void) const;
|
||||||
|
|
||||||
extern double do_op(Shape *s, double (Shape::*m)(void) const);
|
extern double do_op(Shape *s, double (Shape::*m)(void) const);
|
||||||
#if !defined(SWIGGO)
|
|
||||||
extern double do_op_td(Shape *s, PerimeterFunc_td m);
|
extern double do_op_td(Shape *s, PerimeterFunc_td m);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Functions that return member pointers */
|
/* Functions that return member pointers */
|
||||||
|
|
||||||
extern double (Shape::*areapt())(void) const;
|
extern double (Shape::*areapt())(void) const;
|
||||||
extern double (Shape::*perimeterpt())(void) const;
|
extern double (Shape::*perimeterpt())(void) const;
|
||||||
#if !defined(SWIGGO)
|
|
||||||
extern PerimeterFunc_td perimeterpt_td();
|
extern PerimeterFunc_td perimeterpt_td();
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Global variables that are member pointers */
|
/* Global variables that are member pointers */
|
||||||
extern double (Shape::*areavar)(void) const;
|
extern double (Shape::*areavar)(void) const;
|
||||||
extern double (Shape::*perimetervar)(void) const;
|
extern double (Shape::*perimetervar)(void) const;
|
||||||
#if !defined(SWIGGO)
|
|
||||||
extern PerimeterFunc_td perimetervar_td;
|
extern PerimeterFunc_td perimetervar_td;
|
||||||
#endif
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%{
|
%{
|
||||||
|
@ -124,11 +118,9 @@ PerimeterFunc_td perimetervar_td = &Shape::perimeter;
|
||||||
|
|
||||||
|
|
||||||
/* Some constants */
|
/* Some constants */
|
||||||
#if !defined(SWIGGO)
|
|
||||||
%constant double (Shape::*AREAPT)(void) const = &Shape::area;
|
%constant double (Shape::*AREAPT)(void) const = &Shape::area;
|
||||||
%constant double (Shape::*PERIMPT)(void) const = &Shape::perimeter;
|
%constant double (Shape::*PERIMPT)(void) const = &Shape::perimeter;
|
||||||
%constant double (Shape::*NULLPT)(void) const = 0;
|
%constant double (Shape::*NULLPT)(void) const = 0;
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
%inline %{
|
%inline %{
|
||||||
|
@ -152,8 +144,6 @@ int call1(int (Funktions::*d)(const int &, int) const, int a, int b) { Funktions
|
||||||
//int call3(int & (Funktions::*d)(const int &, int) const, int a, int b) { Funktions f; return (f.*d)(a, b); }
|
//int call3(int & (Funktions::*d)(const int &, int) const, int a, int b) { Funktions f; return (f.*d)(a, b); }
|
||||||
%}
|
%}
|
||||||
|
|
||||||
#if !defined(SWIGGO)
|
|
||||||
%constant int (Funktions::*ADD_BY_VALUE)(const int &, int) const = &Funktions::addByValue;
|
%constant int (Funktions::*ADD_BY_VALUE)(const int &, int) const = &Funktions::addByValue;
|
||||||
#endif
|
|
||||||
//%constant int * (Funktions::*ADD_BY_POINTER)(const int &, int) const = &Funktions::addByPointer;
|
//%constant int * (Funktions::*ADD_BY_POINTER)(const int &, int) const = &Funktions::addByPointer;
|
||||||
//%constant int & (Funktions::*ADD_BY_REFERENCE)(const int &, int) const = &Funktions::addByReference;
|
//%constant int & (Funktions::*ADD_BY_REFERENCE)(const int &, int) const = &Funktions::addByReference;
|
||||||
|
|
|
@ -232,6 +232,8 @@ $body)"
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* name conversion for overloaded operators. */
|
/* name conversion for overloaded operators. */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -136,6 +136,8 @@
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
%{
|
%{
|
||||||
|
|
||||||
|
|
|
@ -716,6 +716,8 @@ $result = C_SCHEME_UNDEFINED;
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* ------------------------------------------------------------
|
/* ------------------------------------------------------------
|
||||||
* Overloaded operator support
|
* Overloaded operator support
|
||||||
|
|
|
@ -843,6 +843,13 @@ SWIGINTERN const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
|
||||||
$*csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $*csclassname(cPtr, $owner);$excode
|
$*csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $*csclassname(cPtr, $owner);$excode
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
%typemap(csvarout, excode=SWIGEXCODE) SWIGTYPE *const& %{
|
||||||
|
get {
|
||||||
|
global::System.IntPtr cPtr = $imcall;
|
||||||
|
$*csclassname ret = (cPtr == global::System.IntPtr.Zero) ? null : new $*csclassname(cPtr, $owner);$excode
|
||||||
|
return ret;
|
||||||
|
} %}
|
||||||
|
|
||||||
%typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0)
|
%typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0)
|
||||||
%{ temp = ($*1_ltype)$input;
|
%{ temp = ($*1_ltype)$input;
|
||||||
$1 = ($1_ltype)&temp; %}
|
$1 = ($1_ltype)&temp; %}
|
||||||
|
@ -1011,6 +1018,8 @@ SWIG_CSBODY_TYPEWRAPPER(internal, protected, internal, SWIGTYPE)
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* csharp keywords */
|
/* csharp keywords */
|
||||||
%include <csharpkw.swg>
|
%include <csharpkw.swg>
|
||||||
|
|
|
@ -43,6 +43,8 @@
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helper functions to pack/unpack arbitrary binary data (member function
|
* Helper functions to pack/unpack arbitrary binary data (member function
|
||||||
|
|
|
@ -341,8 +341,6 @@
|
||||||
%typemap(directorout) SWIGTYPE *
|
%typemap(directorout) SWIGTYPE *
|
||||||
%{ $result = *($&1_ltype)&$input; %}
|
%{ $result = *($&1_ltype)&$input; %}
|
||||||
|
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
|
||||||
|
|
||||||
/* Pointer references. */
|
/* Pointer references. */
|
||||||
|
|
||||||
%typemap(gotype) SWIGTYPE *const&
|
%typemap(gotype) SWIGTYPE *const&
|
||||||
|
@ -692,6 +690,10 @@
|
||||||
SWIGTYPE (CLASS::*)
|
SWIGTYPE (CLASS::*)
|
||||||
""
|
""
|
||||||
|
|
||||||
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* Go keywords. */
|
/* Go keywords. */
|
||||||
%include <gokw.swg>
|
%include <gokw.swg>
|
||||||
|
|
||||||
|
|
|
@ -468,5 +468,7 @@ typedef unsigned long SCM;
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* typemaps.i ends here */
|
/* typemaps.i ends here */
|
||||||
|
|
|
@ -1338,6 +1338,8 @@ SWIG_PROXY_CONSTRUCTOR(true, true, SWIGTYPE)
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* String & length */
|
/* String & length */
|
||||||
%typemap(jni) (char *STRING, size_t LENGTH) "jbyteArray"
|
%typemap(jni) (char *STRING, size_t LENGTH) "jbyteArray"
|
||||||
|
|
|
@ -386,6 +386,8 @@ parameters match which function
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
// size_t (which is just a unsigned long)
|
// size_t (which is just a unsigned long)
|
||||||
%apply unsigned long { size_t };
|
%apply unsigned long { size_t };
|
||||||
|
|
|
@ -782,4 +782,6 @@ FROM BlaBla IMPORT Bla;
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
|
|
|
@ -368,4 +368,6 @@ SIMPLE_MAP(unsigned long long,caml_val_ulong,caml_long_val);
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
|
|
|
@ -525,7 +525,8 @@
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* php keywords */
|
/* php keywords */
|
||||||
%include <phpkw.swg>
|
%include <phpkw.swg>
|
||||||
|
|
|
@ -523,7 +523,8 @@
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* php keywords */
|
/* php keywords */
|
||||||
%include <phpkw.swg>
|
%include <phpkw.swg>
|
||||||
|
|
|
@ -273,6 +273,8 @@ extern "C" {
|
||||||
|
|
||||||
/* const pointers */
|
/* const pointers */
|
||||||
%apply SWIGTYPE * { SWIGTYPE *const }
|
%apply SWIGTYPE * { SWIGTYPE *const }
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* ------------------------------------------------------------
|
/* ------------------------------------------------------------
|
||||||
* Overloaded operator support
|
* Overloaded operator support
|
||||||
|
|
|
@ -584,6 +584,9 @@
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
%apply SWIGTYPE (CLASS::*) { SWIGTYPE (CLASS::*const) }
|
||||||
|
%apply SWIGTYPE & { SWIGTYPE (CLASS::*const&) }
|
||||||
|
|
||||||
/* ------------------------------------------------------------
|
/* ------------------------------------------------------------
|
||||||
* --- function ptr typemaps ---
|
* --- function ptr typemaps ---
|
||||||
* ------------------------------------------------------------ */
|
* ------------------------------------------------------------ */
|
||||||
|
|
|
@ -2806,17 +2806,25 @@ private:
|
||||||
return SWIG_NOWRAP;
|
return SWIG_NOWRAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
String *get = NewString("");
|
|
||||||
Printv(get, Swig_cresult_name(), " = ", NULL);
|
|
||||||
|
|
||||||
String *rawval = Getattr(n, "rawval");
|
String *rawval = Getattr(n, "rawval");
|
||||||
if (rawval && Len(rawval)) {
|
if (rawval && Len(rawval)) {
|
||||||
if (SwigType_type(type) == T_STRING) {
|
// Based on Swig_VargetToFunction
|
||||||
Printv(get, "(char *)", NULL);
|
String *nname = NewStringf("(%s)", rawval);
|
||||||
|
String *call;
|
||||||
|
if (SwigType_isclass(type)) {
|
||||||
|
call = NewStringf("%s", nname);
|
||||||
|
} else {
|
||||||
|
call = SwigType_lcaststr(type, nname);
|
||||||
}
|
}
|
||||||
|
String *cres = Swig_cresult(type, Swig_cresult_name(), call);
|
||||||
Printv(get, rawval, NULL);
|
Setattr(n, "wrap:action", cres);
|
||||||
|
Delete(nname);
|
||||||
|
Delete(call);
|
||||||
|
Delete(cres);
|
||||||
} else {
|
} else {
|
||||||
|
String *get = NewString("");
|
||||||
|
Printv(get, Swig_cresult_name(), " = ", NULL);
|
||||||
|
|
||||||
char quote;
|
char quote;
|
||||||
if (Getattr(n, "wrappedasconstant")) {
|
if (Getattr(n, "wrappedasconstant")) {
|
||||||
quote = '\0';
|
quote = '\0';
|
||||||
|
@ -2838,12 +2846,13 @@ private:
|
||||||
if (quote != '\0') {
|
if (quote != '\0') {
|
||||||
Printf(get, "%c", quote);
|
Printf(get, "%c", quote);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Printv(get, ";\n", NULL);
|
||||||
|
|
||||||
|
Setattr(n, "wrap:action", get);
|
||||||
|
Delete(get);
|
||||||
}
|
}
|
||||||
|
|
||||||
Printv(get, ";\n", NULL);
|
|
||||||
|
|
||||||
Setattr(n, "wrap:action", get);
|
|
||||||
|
|
||||||
String *sname = Copy(symname);
|
String *sname = Copy(symname);
|
||||||
if (class_name) {
|
if (class_name) {
|
||||||
Append(sname, "_");
|
Append(sname, "_");
|
||||||
|
@ -6234,7 +6243,7 @@ private:
|
||||||
}
|
}
|
||||||
} else if (SwigType_isfunctionpointer(type) || SwigType_isfunction(type)) {
|
} else if (SwigType_isfunctionpointer(type) || SwigType_isfunction(type)) {
|
||||||
ret = NewString("_swig_fnptr");
|
ret = NewString("_swig_fnptr");
|
||||||
} else if (SwigType_ismemberpointer(type)) {
|
} else if (SwigType_ismemberpointer(t)) {
|
||||||
ret = NewString("_swig_memberptr");
|
ret = NewString("_swig_memberptr");
|
||||||
} else if (SwigType_issimple(t)) {
|
} else if (SwigType_issimple(t)) {
|
||||||
Node *cn = classLookup(t);
|
Node *cn = classLookup(t);
|
||||||
|
|
|
@ -439,13 +439,8 @@ SwigType *SwigType_default_deduce(const SwigType *t) {
|
||||||
Setitem(l, numitems-2, deduced_subtype);
|
Setitem(l, numitems-2, deduced_subtype);
|
||||||
}
|
}
|
||||||
} else if (SwigType_ismemberpointer(subtype)) {
|
} else if (SwigType_ismemberpointer(subtype)) {
|
||||||
if (numitems >= 3) {
|
/* member pointer deduction, m(CLASS). => p. */
|
||||||
/* member pointer deduction, eg, r.p.m(CLASS) => r.m(CLASS) */
|
Setitem(l, numitems-2, NewString("p."));
|
||||||
Delitem(l, numitems-3);
|
|
||||||
} else {
|
|
||||||
/* member pointer deduction, m(CLASS). => p. */
|
|
||||||
Setitem(l, numitems-2, NewString("p."));
|
|
||||||
}
|
|
||||||
} else if (is_enum && !SwigType_isqualifier(subtype)) {
|
} else if (is_enum && !SwigType_isqualifier(subtype)) {
|
||||||
/* enum deduction, enum SWIGTYPE => SWIGTYPE */
|
/* enum deduction, enum SWIGTYPE => SWIGTYPE */
|
||||||
Setitem(l, numitems-1, NewString("SWIGTYPE"));
|
Setitem(l, numitems-1, NewString("SWIGTYPE"));
|
||||||
|
|
Loading…
Reference in New Issue