Author: Wim Lavrijsen <wlavrij...@lbl.gov> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit