Merge branch 'stl_bind'

This commit is contained in:
Wenzel Jakob
2016-05-16 12:14:25 +02:00
committed by Wenzel Jakob
11 changed files with 447 additions and 1 deletions

View File

@@ -25,6 +25,7 @@ void init_ex13(py::module &);
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 @@ PYBIND11_PLUGIN(example) {
init_ex14(m);
init_ex15(m);
init_ex16(m);
init_ex17(m);
init_issues(m);
#if defined(PYBIND11_TEST_EIGEN)

36
example/example17.cpp Normal file
View File

@@ -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");
}

40
example/example17.py Normal file
View File

@@ -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)

10
example/example17.ref Normal file
View File

@@ -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}]