Skip to content

Commit e55d835

Browse files
Renamed iterator weakref store functions
1 parent 26bdd62 commit e55d835

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

src/interface/shared/data_iterator.i

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ public:
165165

166166
#if SWIG_VERSION >= 0x040400
167167
// Functions to store weak references to iterators (swig >= v4.4)
168-
%fragment("iterator_weakref_funcs", "header", fragment="private_data") {
168+
%fragment("iterator_store", "header", fragment="private_data") {
169169
static void _process_list(PyObject* list,
170170
Exiv2::container_type::iterator* beg,
171171
Exiv2::container_type::iterator* end) {
@@ -193,7 +193,7 @@ static void invalidate_iterators(PyObject* py_self,
193193
if (list)
194194
_process_list(list, &beg, &end);
195195
};
196-
static int store_iterator_weakref(PyObject* py_self, PyObject* iterator) {
196+
static int store_iterator(PyObject* py_self, PyObject* iterator) {
197197
PyObject* list = private_store_get(py_self, "iterators");
198198
if (list)
199199
purge_iterators(list);
@@ -218,18 +218,21 @@ static int store_iterator_weakref(PyObject* py_self, PyObject* iterator) {
218218

219219
#if SWIG_VERSION >= 0x040400
220220
// clear() invalidates all iterators
221-
%typemap(ret, typemap="iterator_weakref_funcs") void clear {
221+
%typemap(ret, fragment="iterator_store") void clear {
222222
invalidate_iterators(self, arg1->begin(), arg1->end());
223223
}
224-
// erase() and eraseFamily() may invalidate iterators
225-
%typemap(check) Exiv2::container_type::iterator pos {
224+
// erase() and eraseFamily() invalidate some iterators
225+
%typemap(check, fragment="iterator_store")
226+
Exiv2::container_type::iterator pos {
226227
invalidate_iterators(self, $1, $1);
227228
}
228-
%typemap(check) (Exiv2::container_type::iterator beg,
229-
Exiv2::container_type::iterator end) {
229+
%typemap(check, fragment="iterator_store")
230+
(Exiv2::container_type::iterator beg,
231+
Exiv2::container_type::iterator end) {
230232
invalidate_iterators(self, $1, $2);
231233
}
232-
%typemap(check) Exiv2::container_type::iterator& pos {
234+
%typemap(check, fragment="iterator_store")
235+
Exiv2::container_type::iterator& pos {
233236
invalidate_iterators(self, *$1, arg1->end());
234237
}
235238
#endif // SWIG_VERSION
@@ -241,7 +244,7 @@ static int store_iterator_weakref(PyObject* py_self, PyObject* iterator) {
241244
%newobject Exiv2::container_type::findKey;
242245
// Assumes arg1 is the base class parent
243246
#if SWIG_VERSION >= 0x040400
244-
%typemap(out, fragment="iterator_weakref_funcs")
247+
%typemap(out, fragment="iterator_store")
245248
Exiv2::container_type::iterator {
246249
#else
247250
%typemap(out) Exiv2::container_type::iterator {
@@ -252,7 +255,7 @@ static int store_iterator_weakref(PyObject* py_self, PyObject* iterator) {
252255
$typemap(out, container_type##_iterator*);
253256
#if SWIG_VERSION >= 0x040400
254257
// Keep weak reference to the Python iterator
255-
if (store_iterator_weakref(self, $result)) {
258+
if (store_iterator(self, $result)) {
256259
SWIG_fail;
257260
}
258261
#endif // SWIG_VERSION

0 commit comments

Comments
 (0)