Merge branch 'stl_bind'
diff --git a/example/example.cpp b/example/example.cpp
index b4199e8..470684a 100644
--- a/example/example.cpp
+++ b/example/example.cpp
@@ -25,6 +25,7 @@
void init_ex14(py::module &);
void init_ex15(py::module &);
void init_ex16(py::module &);
+void init_ex17(py::module &);
void init_issues(py::module &);
#if defined(PYBIND11_TEST_EIGEN)
@@ -50,6 +51,7 @@
init_ex14(m);
init_ex15(m);
init_ex16(m);
+ init_ex17(m);
init_issues(m);
#if defined(PYBIND11_TEST_EIGEN)
diff --git a/example/example17.cpp b/example/example17.cpp
new file mode 100644
index 0000000..8ae4cad
--- /dev/null
+++ b/example/example17.cpp
@@ -0,0 +1,36 @@
+/*
+ example/example17.cpp -- Usage of stl_binders functions
+
+ Copyright (c) 2016 Sergey Lyskov
+
+ All rights reserved. Use of this source code is governed by a
+ BSD-style license that can be found in the LICENSE file.
+*/
+
+#include "example.h"
+
+#include <pybind11/stl_bind.h>
+
+class El {
+public:
+ El() = delete;
+ El(int v) : a(v) { }
+
+ int a;
+};
+
+std::ostream & operator<<(std::ostream &s, El const&v) {
+ s << "El{" << v.a << '}';
+ return s;
+}
+
+void init_ex17(py::module &m) {
+ pybind11::class_<El>(m, "El")
+ .def(pybind11::init<int>());
+
+ pybind11::bind_vector<unsigned int>(m, "VectorInt");
+
+ pybind11::bind_vector<El>(m, "VectorEl");
+
+ pybind11::bind_vector<std::vector<El>>(m, "VectorVectorEl");
+}
diff --git a/example/example17.py b/example/example17.py
new file mode 100644
index 0000000..65e586b
--- /dev/null
+++ b/example/example17.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+from __future__ import print_function
+
+from example import VectorInt, El, VectorEl, VectorVectorEl
+
+v_int = VectorInt([0, 0])
+print(len(v_int))
+
+print(bool(v_int))
+
+v_int2 = VectorInt([0, 0])
+print(v_int == v_int2)
+
+v_int2[1] = 1
+print(v_int != v_int2)
+
+v_int2.append(2)
+v_int2.append(3)
+v_int2.insert(0, 1)
+v_int2.insert(0, 2)
+v_int2.insert(0, 3)
+print(v_int2)
+
+v_int.append(99)
+v_int2[2:-2] = v_int
+print(v_int2)
+del v_int2[1:3]
+print(v_int2)
+del v_int2[0]
+print(v_int2)
+
+v_a = VectorEl()
+v_a.append(El(1))
+v_a.append(El(2))
+print(v_a)
+
+vv_a = VectorVectorEl()
+vv_a.append(v_a)
+vv_b = vv_a[0]
+print(vv_b)
diff --git a/example/example17.ref b/example/example17.ref
new file mode 100644
index 0000000..55e47a6
--- /dev/null
+++ b/example/example17.ref
@@ -0,0 +1,10 @@
+2
+True
+True
+True
+VectorInt[3, 2, 1, 0, 1, 2, 3]
+VectorInt[3, 2, 0, 0, 99, 2, 3]
+VectorInt[3, 0, 99, 2, 3]
+VectorInt[0, 99, 2, 3]
+VectorEl[El{1}, El{2}]
+VectorEl[El{1}, El{2}]