From c3b41dd95903bf62c48a045f0053810835790cb2 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Wed, 6 Oct 2004 08:26:58 +0000 Subject: [PATCH] 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 --- Examples/test-suite/common.mk | 1 + Examples/test-suite/enum_template.i | 39 +++++++++++++++++++ .../test-suite/python/enum_template_runme.py | 7 ++++ Source/Swig/stype.c | 3 +- 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 Examples/test-suite/enum_template.i create mode 100644 Examples/test-suite/python/enum_template_runme.py diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 83cb56fd2..bc309cf76 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -128,6 +128,7 @@ CPP_TEST_CASES += \ enum_plus \ enum_scope \ enum_scope_template \ + enum_template \ enum_thorough \ enum_var \ evil_diamond \ diff --git a/Examples/test-suite/enum_template.i b/Examples/test-suite/enum_template.i new file mode 100644 index 000000000..54ee6187a --- /dev/null +++ b/Examples/test-suite/enum_template.i @@ -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 "", 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 CTempl +{ +}; + +%} + +%template(CTempl_ETest) CTempl; diff --git a/Examples/test-suite/python/enum_template_runme.py b/Examples/test-suite/python/enum_template_runme.py new file mode 100644 index 000000000..6ad0a8060 --- /dev/null +++ b/Examples/test-suite/python/enum_template_runme.py @@ -0,0 +1,7 @@ +import enum_template +if enum_template.MakeETest() != 1: + raise RuntimeError + +if enum_template.TakeETest(0) != None: + raise RuntimeError + diff --git a/Source/Swig/stype.c b/Source/Swig/stype.c index ac69defc8..04354ef1b 100644 --- a/Source/Swig/stype.c +++ b/Source/Swig/stype.c @@ -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;