diff --git a/SWIG/Examples/test-suite/python/Makefile.in b/SWIG/Examples/test-suite/python/Makefile.in index 283db3980..6c2032e95 100644 --- a/SWIG/Examples/test-suite/python/Makefile.in +++ b/SWIG/Examples/test-suite/python/Makefile.in @@ -4,8 +4,11 @@ ####################################################################### LANGUAGE = python -#PYTHON = valgrind --leak-check=full --show-reachable=yes @PYTHON@ +ifneq (,$(USE_VALGRIND)) +PYTHON = valgrind --leak-check=full --suppressions=pyswig.supp @PYTHON@ +else PYTHON = @PYTHON@ +endif SCRIPTSUFFIX = _runme.py srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -24,6 +27,7 @@ CPP_TEST_CASES += \ inout \ input \ inplaceadd \ + implicittest \ kwargs \ li_cstring \ li_cwstring \ @@ -40,7 +44,8 @@ CPP_TEST_CASES += \ std_containers \ swigobject \ template_matrix \ - simutry + simutry \ + vector C_TEST_CASES += \ diff --git a/SWIG/Examples/test-suite/python/vector.i b/SWIG/Examples/test-suite/python/vector.i new file mode 100644 index 000000000..46d0ab50d --- /dev/null +++ b/SWIG/Examples/test-suite/python/vector.i @@ -0,0 +1,51 @@ +%module vector +%{ +#include +%} + +%define SWIG_STD_VECTOR_MINIMUM(CSTYPE, CTYPE...) + public: + typedef size_t size_type; + typedef CTYPE value_type; + size_type size() const; + vector(); + %extend { + static std::vector *Repeat(const value_type& value, int count) /*throw (std::out_of_range)*/ { +// if (count < 0) +// throw std::out_of_range("count"); + return new std::vector(count, value); + } + } +%enddef + +namespace std { + // primary (unspecialized) class template for std::vector + // does not require operator== to be defined + template class vector { + SWIG_STD_VECTOR_MINIMUM(T, T) + }; +} + +%define SWIG_STD_VECTOR_SPECIALIZE(CSTYPE, CTYPE...) +namespace std { + template<> class vector { + SWIG_STD_VECTOR_MINIMUM(CSTYPE, CTYPE) + }; +} +%enddef + +SWIG_STD_VECTOR_SPECIALIZE(float, float) + +%inline %{ +typedef float Real; +%} + +#if 1 +//fails +namespace std { + %template(RealVector) vector; +} +#else +//works +%template(RealVector) std::vector; +#endif