From: <wsf...@us...> - 2010-02-13 15:38:00
|
Revision: 11860 http://swig.svn.sourceforge.net/swig/?rev=11860&view=rev Author: wsfulton Date: 2010-02-13 15:37:53 +0000 (Sat, 13 Feb 2010) Log Message: ----------- Add in some testcases that should have been checked in a while ago Added Paths: ----------- trunk/Examples/test-suite/global_scope_types.i trunk/Examples/test-suite/typemap_template.i Added: trunk/Examples/test-suite/global_scope_types.i =================================================================== --- trunk/Examples/test-suite/global_scope_types.i (rev 0) +++ trunk/Examples/test-suite/global_scope_types.i 2010-02-13 15:37:53 UTC (rev 11860) @@ -0,0 +1,44 @@ +%module global_scope_types + +// no constructor/destructor wrappers as they do not use global scope operator which we are trying to test here +%nodefaultctor Dingaling; +%nodefaultdtor Dingaling; + +%inline %{ +struct Dingaling {}; +typedef Dingaling DINGALING; +template <typename T> struct MyTemplate { + T tt(T t) { return t; } + T& ttr(T& t) { return t; } +}; + +#ifndef SWIG +// This is added so that the code will not compile, if the global scope operator on Dingaling is omitted in the generated code +namespace Spac { + class Dingaling { + Dingaling(); + Dingaling(const Dingaling& t); + Dingaling& operator=(const Dingaling t); + }; +} +using namespace Spac; +#endif + +namespace Spac { + + struct Ting {}; + typedef Ting TING; + + class Test { + public: + void something(::Dingaling t, ::Dingaling* pt, ::Dingaling& rt, const ::Dingaling& crt) {} + void tsomething(MyTemplate< ::Dingaling > t1, MyTemplate< const ::Dingaling& > t2) {} +// void usomething(::MyTemplate< ::DINGALING > t3, ::MyTemplate< ::DINGALING *> t4) {} // needs fixing + void nothing(::Spac::Ting*, ::Spac::TING&) {} + }; + +} + +void funcptrtest( void (*)(::Dingaling) ) {} +%} + Added: trunk/Examples/test-suite/typemap_template.i =================================================================== --- trunk/Examples/test-suite/typemap_template.i (rev 0) +++ trunk/Examples/test-suite/typemap_template.i 2010-02-13 15:37:53 UTC (rev 11860) @@ -0,0 +1,34 @@ +%module typemap_template + +/* Test bug in 1.3.40 where the presence of a generic/unspecialized typemap caused the incorrect specialized typemap to be used */ + +%typemap(in) SWIGTYPE "/*_this_will_not_compile_SWIGTYPE_ \"$type\" */ " +%typemap(in) const SWIGTYPE & "/*_this_will_not_compile_const_SWIGTYPE_REF_\"$type\" */ " + +%typemap(in) const TemplateTest1 & {$1 = (TemplateTest1<YY> *)0; /* in typemap generic for $type */} +%typemap(in) const TemplateTest1< ZZ > & {$1 = (TemplateTest1<ZZ> *)0; /* in typemap ZZ for $type */} +%typemap(in) const TemplateTest1< int > & {$1 = (TemplateTest1<int> *)0; /* in typemap int for $type */} + +%inline %{ +template<typename T> struct TemplateTest1 { + void setT(const TemplateTest1& t) {} +}; +%} + +%inline %{ + struct YY {}; + struct ZZ {}; +%} + + +%template(TTYY) TemplateTest1< YY >; +%template(TTZZ) TemplateTest1< ZZ >; +%template(TTint) TemplateTest1< int >; + +%inline %{ + void extratest(const TemplateTest1< YY > &t, + const TemplateTest1< ZZ > &tt, + const TemplateTest1< int > &ttt) + {} +%} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |