strange cache effect, disable by now, see enum_template.i
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6340 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
a105903188
commit
6f5b5d3b7c
4 changed files with 49 additions and 1 deletions
|
|
@ -128,6 +128,7 @@ CPP_TEST_CASES += \
|
|||
enum_plus \
|
||||
enum_scope \
|
||||
enum_scope_template \
|
||||
enum_template \
|
||||
enum_thorough \
|
||||
enum_var \
|
||||
evil_diamond \
|
||||
|
|
|
|||
39
SWIG/Examples/test-suite/enum_template.i
Normal file
39
SWIG/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
SWIG/Examples/test-suite/python/enum_template_runme.py
Normal file
7
SWIG/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");
|
||||
}
|
||||
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) {
|
||||
Delete(def);
|
||||
def = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue