aboutsummaryrefslogtreecommitdiff
path: root/Lib/python
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2018-09-23 08:55:01 +0100
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2018-09-23 19:10:00 +0100
commit72ccea50809c4c4f9943e6597027359c65e0df24 (patch)
tree08fec4acdda6d0f70fcabdb50d7682fb1aa8cf9e /Lib/python
parent603285ecb6064e5192fa5b69c37ea3adfbba0434 (diff)
downloadswig-72ccea50809c4c4f9943e6597027359c65e0df24.tar.gz
Python std::unordered_map std::unordered_multimap improvements
- Fixes for -builtin - Fix missing iterator support
Diffstat (limited to 'Lib/python')
-rw-r--r--Lib/python/std_unordered_map.i42
1 files changed, 33 insertions, 9 deletions
diff --git a/Lib/python/std_unordered_map.i b/Lib/python/std_unordered_map.i
index f89a36a12..79882b292 100644
--- a/Lib/python/std_unordered_map.i
+++ b/Lib/python/std_unordered_map.i
@@ -139,7 +139,39 @@
%swig_container_methods(Map)
#if defined(SWIGPYTHON_BUILTIN)
+ %feature("python:slot", "mp_length", functype="lenfunc") __len__;
+ %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__;
+ %feature("python:slot", "tp_iter", functype="getiterfunc") key_iterator;
%feature("python:slot", "sq_contains", functype="objobjproc") __contains__;
+
+ %extend {
+ %newobject iterkeys(PyObject **PYTHON_SELF);
+ swig::SwigPyIterator* iterkeys(PyObject **PYTHON_SELF) {
+ return swig::make_output_key_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF);
+ }
+
+ %newobject itervalues(PyObject **PYTHON_SELF);
+ swig::SwigPyIterator* itervalues(PyObject **PYTHON_SELF) {
+ return swig::make_output_value_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF);
+ }
+
+ %newobject iteritems(PyObject **PYTHON_SELF);
+ swig::SwigPyIterator* iteritems(PyObject **PYTHON_SELF) {
+ return swig::make_output_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF);
+ }
+ }
+
+#else
+ %extend {
+ %pythoncode %{def __iter__(self):
+ return self.key_iterator()%}
+ %pythoncode %{def iterkeys(self):
+ return self.key_iterator()%}
+ %pythoncode %{def itervalues(self):
+ return self.value_iterator()%}
+ %pythoncode %{def iteritems(self):
+ return self.iterator()%}
+ }
#endif
%extend {
@@ -231,16 +263,8 @@
swig::SwigPyIterator* value_iterator(PyObject **PYTHON_SELF) {
return swig::make_output_value_forward_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF);
}
-
- %pythoncode %{def __iter__(self):
- return self.key_iterator()%}
- %pythoncode %{def iterkeys(self):
- return self.key_iterator()%}
- %pythoncode %{def itervalues(self):
- return self.value_iterator()%}
- %pythoncode %{def iteritems(self):
- return self.iterator()%}
}
+
%enddef
%define %swig_unordered_map_methods(Map...)