Author: Wim Lavrijsen <[email protected]>
Branch: cppyy-packaging
Changeset: r94765:a94f77177791
Date: 2018-06-12 20:29 -0700
http://bitbucket.org/pypy/pypy/changeset/a94f77177791/
Log: call reserve before push_backing a python container
diff --git a/pypy/module/_cppyy/pythonify.py b/pypy/module/_cppyy/pythonify.py
--- a/pypy/module/_cppyy/pythonify.py
+++ b/pypy/module/_cppyy/pythonify.py
@@ -408,10 +408,16 @@
# map push_back -> __iadd__ (generally true for STL)
if 'push_back' in pyclass.__dict__ and not '__iadd__' in pyclass.__dict__:
- def __iadd__(self, ll):
- [self.push_back(x) for x in ll]
- return self
- pyclass.__iadd__ = __iadd__
+ if 'reserve' in pyclass.__dict__:
+ def iadd(self, ll):
+ self.reserve(len(ll))
+ for x in ll: self.push_back(x)
+ return self
+ else:
+ def iadd(self, ll):
+ for x in ll: self.push_back(x)
+ return self
+ pyclass.__iadd__ = iadd
# map begin()/end() protocol to iter protocol on STL(-like) classes, but
# not on vector, which is pythonized in the capi (interp-level; there is
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit