strange cache effect, disable by now, see enum_template.i
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6340 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
9303e3af22
commit
c3b41dd959
4 changed files with 49 additions and 1 deletions
|
|
@ -128,6 +128,7 @@ CPP_TEST_CASES += \
|
||||||
enum_plus \
|
enum_plus \
|
||||||
enum_scope \
|
enum_scope \
|
||||||
enum_scope_template \
|
enum_scope_template \
|
||||||
|
enum_template \
|
||||||
enum_thorough \
|
enum_thorough \
|
||||||
enum_var \
|
enum_var \
|
||||||
evil_diamond \
|
evil_diamond \
|
||||||
|
|
|
||||||
39
Examples/test-suite/enum_template.i
Normal file
39
Examples/test-suite/enum_template.i
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
%module enum_template
|
||||||
|
|
||||||
|
/*
|
||||||
|
From bug report 992329:
|
||||||
|
|
||||||
|
In Python I see
|
||||||
|
|
||||||
|
>>> import enum_template
|
||||||
|
>>> enum_template.MakeETest()
|
||||||
|
'_60561408_p_ETest'
|
||||||
|
>>> enum_template.TakeETest(0)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in ?
|
||||||
|
TypeError: Expected a pointer
|
||||||
|
|
||||||
|
Without the %template, things work fine: the first
|
||||||
|
function call returns an integer, and the second
|
||||||
|
succeeds.
|
||||||
|
*/
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
|
||||||
|
enum ETest
|
||||||
|
{
|
||||||
|
eTest0,
|
||||||
|
eTest1,
|
||||||
|
eTest2
|
||||||
|
};
|
||||||
|
|
||||||
|
void TakeETest(ETest test) {};
|
||||||
|
ETest MakeETest(void) {return eTest1;};
|
||||||
|
|
||||||
|
template<class T> class CTempl
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
%}
|
||||||
|
|
||||||
|
%template(CTempl_ETest) CTempl<ETest>;
|
||||||
7
Examples/test-suite/python/enum_template_runme.py
Normal file
7
Examples/test-suite/python/enum_template_runme.py
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
import enum_template
|
||||||
|
if enum_template.MakeETest() != 1:
|
||||||
|
raise RuntimeError
|
||||||
|
|
||||||
|
if enum_template.TakeETest(0) != None:
|
||||||
|
raise RuntimeError
|
||||||
|
|
||||||
|
|
@ -342,7 +342,8 @@ SwigType *SwigType_default(SwigType *t) {
|
||||||
def = NewString("SWIGTYPE");
|
def = NewString("SWIGTYPE");
|
||||||
}
|
}
|
||||||
if (r != t) Delete(r);
|
if (r != t) Delete(r);
|
||||||
Setattr(default_cache,t,Copy(def));
|
/* The cache produces strange results, see enum_template.i case */
|
||||||
|
/* Setattr(default_cache,t,Copy(def)); */
|
||||||
if (Strcmp(def,t) == 0) {
|
if (Strcmp(def,t) == 0) {
|
||||||
Delete(def);
|
Delete(def);
|
||||||
def = 0;
|
def = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue