add more cases and flag for valgrind

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8098 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-12-27 22:38:27 +00:00
commit 70bb5455a6
2 changed files with 58 additions and 2 deletions

View file

@ -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 += \

View file

@ -0,0 +1,51 @@
%module vector
%{
#include <vector>
%}
%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<CTYPE > *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<CTYPE >(count, value);
}
}
%enddef
namespace std {
// primary (unspecialized) class template for std::vector
// does not require operator== to be defined
template<class T> class vector {
SWIG_STD_VECTOR_MINIMUM(T, T)
};
}
%define SWIG_STD_VECTOR_SPECIALIZE(CSTYPE, CTYPE...)
namespace std {
template<> class vector<CTYPE > {
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<int>;
}
#else
//works
%template(RealVector) std::vector<Real>;
#endif