Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit dd00986

Browse files
committed
container/vector: reduce code redudancy
1 parent 67d2ad0 commit dd00986

File tree

1 file changed

+5
-21
lines changed

1 file changed

+5
-21
lines changed

‎include/eigenpy/std-vector.hpp‎

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ struct overload_base_get_item_for_std_vector
8686
void visit(Class &cl) const {
8787
cl.def("__getitem__", &base_get_item_int)
8888
.def("__getitem__", &base_get_item_slice)
89-
.def("__getitem__", &base_get_item_list)
90-
.def("__getitem__", &base_get_item_tuple);
89+
.def("__getitem__", &base_get_item_list_or_tuple<bp::list>)
90+
.def("__getitem__", &base_get_item_list_or_tuple<bp::tuple>);
9191
}
9292

9393
private:
@@ -132,25 +132,9 @@ struct overload_base_get_item_for_std_vector
132132
return out;
133133
}
134134

135-
static bp::object base_get_item_list(bp::back_reference<Container &> c,
136-
bp::list idxs) {
137-
const Py_ssize_t m = bp::len(idxs);
138-
bp::list out;
139-
for (Py_ssize_t k = 0; k < m; ++k) {
140-
bp::object obj = idxs[k];
141-
bp::extract<long> ei(obj);
142-
if (!ei.check()) {
143-
PyErr_SetString(PyExc_TypeError, "indices must be integers");
144-
bp::throw_error_already_set();
145-
}
146-
auto idx = normalize_index(c.get().size(), ei());
147-
out.append(elem_ref(c.get(), idx));
148-
}
149-
return out;
150-
}
151-
152-
static bp::object base_get_item_tuple(bp::back_reference<Container &> c,
153-
bp::tuple idxs) {
135+
template <typename list_or_tuple>
136+
static bp::object base_get_item_list_or_tuple(
137+
bp::back_reference<Container &> c, list_or_tuple idxs) {
154138
const Py_ssize_t m = bp::len(idxs);
155139
bp::list out;
156140
for (Py_ssize_t k = 0; k < m; ++k) {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /