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:
Marcelo Matus 2004-10-06 08:26:58 +00:00
commit 6f5b5d3b7c
4 changed files with 49 additions and 1 deletions

View file

@ -128,6 +128,7 @@ CPP_TEST_CASES += \
enum_plus \
enum_scope \
enum_scope_template \
enum_template \
enum_thorough \
enum_var \
evil_diamond \

View 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>;

View file

@ -0,0 +1,7 @@
import enum_template
if enum_template.MakeETest() != 1:
raise RuntimeError
if enum_template.TakeETest(0) != None:
raise RuntimeError

View file

@ -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;