Python - fix compilation error when using -extranative and -builtin.

Closes #816
This commit is contained in:
William S Fulton 2016-11-02 22:00:54 +00:00
parent 20cd562e62
commit bdda0a0829
5 changed files with 32 additions and 1 deletions

View File

@ -5,6 +5,9 @@ See the RELEASENOTES file for a summary of changes in each release.
Version 3.0.11 (in progress)
============================
2016-11-02: wsfulton
[Python] Issue #816 - fix compilation error when using -extranative and -builtin.
2016-11-02: liorgold
Patch #741 - Add support for C++11 alias templates, see updated CPlusPlus11.html
documentation.

View File

@ -62,6 +62,7 @@ CPP_TEST_CASES += \
python_destructor_exception \
python_director \
python_docstring \
python_extranative \
python_nondynamic \
python_overload_simple_cast \
python_pickle \

View File

@ -0,0 +1,11 @@
import python_extranative
vs = python_extranative.make_vector_string()
if not isinstance(vs, python_extranative.VectorString):
# will be of type tuple if extranative not working
raise RuntimeError("Not of type VectorString")
for s1, s2 in zip(vs, ["one", "two"]):
if s1 != s2:
raise RuntimeError("Mismatch: " + s1 + " " + s2)

View File

@ -0,0 +1,16 @@
%module(extranative="1") python_extranative
%include <std_vector.i>
%include <std_string.i>
%template(VectorString) std::vector<std::string>;
%inline %{
std::vector<std::string> make_vector_string() {
std::vector<std::string> vs;
vs.push_back("one");
vs.push_back("two");
return vs;
}
%}

View File

@ -1012,7 +1012,7 @@ namespace swig {
%#ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS
swig_type_info *desc = swig::type_info<sequence>();
if (desc && desc->clientdata) {
return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
return SWIG_InternalNewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
}
%#endif
size_type size = seq.size();