Coverage Report

Created: 2026-09-28 07:21

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/rdkit/Code/GraphMol/AtomIterators.cpp
Line
Count
Source
1
//
2
//  Copyright (C) 2002-2017 Greg Landrum and Rational Discovery LLC
3
//
4
//   @@ All Rights Reserved @@
5
//  This file is part of the RDKit.
6
//  The contents are covered by the terms of the BSD license
7
//  which is included in the file license.txt, found at the root
8
//  of the RDKit source tree.
9
//
10
#include "AtomIterators.h"
11
#include "RDKitBase.h"
12
#include "RDKitQueries.h"
13
14
namespace RDKit {
15
template <class Atom_, class Mol_>
16
0
AtomIterator_<Atom_, Mol_>::AtomIterator_(Mol_ *mol) {
17
0
  _mol = mol;
18
0
  _pos = 0;
19
0
  _max = mol->getNumAtoms();
20
0
};
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::AtomIterator_(RDKit::ROMol*)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::AtomIterator_(RDKit::ROMol const*)
21
template <class Atom_, class Mol_>
22
0
AtomIterator_<Atom_, Mol_>::AtomIterator_(Mol_ *mol, int pos) {
23
0
  _mol = mol;
24
0
  _pos = pos;
25
0
  _max = mol->getNumAtoms();
26
0
};
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::AtomIterator_(RDKit::ROMol*, int)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::AtomIterator_(RDKit::ROMol const*, int)
27
template <class Atom_, class Mol_>
28
AtomIterator_<Atom_, Mol_>::AtomIterator_(
29
0
    const AtomIterator_<Atom_, Mol_> &other) {
30
0
  _mol = other._mol;
31
0
  _pos = other._pos;
32
0
  _max = other._max;
33
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::AtomIterator_(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::AtomIterator_(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
34
template <class Atom_, class Mol_>
35
AtomIterator_<Atom_, Mol_> &AtomIterator_<Atom_, Mol_>::operator=(
36
0
    const AtomIterator_<Atom_, Mol_> &other) {
37
0
  _mol = other._mol;
38
0
  _pos = other._pos;
39
0
  _max = other._max;
40
0
  return *this;
41
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator=(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator=(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
42
43
template <class Atom_, class Mol_>
44
0
AtomIterator_<Atom_, Mol_> &AtomIterator_<Atom_, Mol_>::operator+=(int val) {
45
0
  _pos += val;
46
0
  if (_pos < 0 || _pos > _max) {
47
0
    _pos = _max;
48
0
  }
49
0
  return *this;
50
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator+=(int)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator+=(int)
51
template <class Atom_, class Mol_>
52
0
AtomIterator_<Atom_, Mol_> &AtomIterator_<Atom_, Mol_>::operator-=(int val) {
53
0
  _pos -= val;
54
0
  if (_pos < 0 || _pos > _max) {
55
0
    _pos = _max;
56
0
  }
57
0
  return *this;
58
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator-=(int)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator-=(int)
59
template <class Atom_, class Mol_>
60
AtomIterator_<Atom_, Mol_> AtomIterator_<Atom_, Mol_>::operator+(
61
0
    int val) const {
62
0
  AtomIterator_<Atom_, Mol_> res(*this);
63
0
  res += val;
64
  // += takes care of the pre/post conditions for us, so we're safe to return
65
0
  return res;
66
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator+(int) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator+(int) const
67
template <class Atom_, class Mol_>
68
AtomIterator_<Atom_, Mol_> AtomIterator_<Atom_, Mol_>::operator-(
69
0
    int val) const {
70
0
  AtomIterator_<Atom_, Mol_> res(*this);
71
  // -= takes care of the pre/post conditions for us, so we're safe to return
72
0
  res -= val;
73
0
  return res;
74
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator-(int) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator-(int) const
75
76
// iterator subtraction
77
template <class Atom_, class Mol_>
78
int AtomIterator_<Atom_, Mol_>::operator-(
79
0
    AtomIterator_<Atom_, Mol_> &other) const {
80
0
  PRECONDITION(_mol == other._mol, "bad operator- call");
81
0
  return _pos - other._pos;
82
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator-(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>&) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator-(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>&) const
83
84
// dereference
85
template <class Atom_, class Mol_>
86
0
Atom_ *AtomIterator_<Atom_, Mol_>::operator*() const {
87
0
  PRECONDITION(_mol != nullptr, "no molecule");
88
0
  RANGE_CHECK(0, _pos, _max - 1);
89
0
  return (*_mol)[_pos];
90
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator*() const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator*() const
91
// random access
92
template <class Atom_, class Mol_>
93
0
Atom_ *AtomIterator_<Atom_, Mol_>::operator[](const int which) const {
94
0
  PRECONDITION(_mol != nullptr, "no molecule");
95
0
  RANGE_CHECK(0, which, _max - 1);
96
0
  return (*_mol)[which];
97
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator[](int) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator[](int) const
98
99
template <class Atom_, class Mol_>
100
bool AtomIterator_<Atom_, Mol_>::operator==(
101
0
    const AtomIterator_<Atom_, Mol_> &other) const {
102
0
  return _mol == other._mol && _pos == other._pos;
103
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator==(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator==(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
104
template <class Atom_, class Mol_>
105
bool AtomIterator_<Atom_, Mol_>::operator!=(
106
0
    const AtomIterator_<Atom_, Mol_> &other) const {
107
0
  return _mol != other._mol || _pos != other._pos;
108
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator!=(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator!=(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
109
template <class Atom_, class Mol_>
110
bool AtomIterator_<Atom_, Mol_>::operator<(
111
0
    const AtomIterator_<Atom_, Mol_> &other) const {
112
0
  return _mol == other._mol && _pos < other._pos;
113
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator<(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator<(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
114
template <class Atom_, class Mol_>
115
bool AtomIterator_<Atom_, Mol_>::operator<=(
116
0
    const AtomIterator_<Atom_, Mol_> &other) const {
117
0
  return _mol == other._mol && _pos <= other._pos;
118
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator<=(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator<=(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
119
template <class Atom_, class Mol_>
120
bool AtomIterator_<Atom_, Mol_>::operator>(
121
0
    const AtomIterator_<Atom_, Mol_> &other) const {
122
0
  return _mol == other._mol && _pos > other._pos;
123
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator>(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator>(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
124
template <class Atom_, class Mol_>
125
bool AtomIterator_<Atom_, Mol_>::operator>=(
126
0
    const AtomIterator_<Atom_, Mol_> &other) const {
127
0
  return _mol == other._mol && _pos >= other._pos;
128
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator>=(RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator>=(RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
129
130
// pre-increment
131
template <class Atom_, class Mol_>
132
0
AtomIterator_<Atom_, Mol_> &AtomIterator_<Atom_, Mol_>::operator++() {
133
0
  _pos++;
134
0
  return *this;
135
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++()
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++()
136
template <class Atom_, class Mol_>
137
0
AtomIterator_<Atom_, Mol_> AtomIterator_<Atom_, Mol_>::operator++(int) {
138
0
  AtomIterator_<Atom_, Mol_> res(*this);
139
0
  _pos++;
140
0
  return res;
141
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++(int)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++(int)
142
// pre-decrement
143
template <class Atom_, class Mol_>
144
0
AtomIterator_<Atom_, Mol_> &AtomIterator_<Atom_, Mol_>::operator--() {
145
0
  _pos--;
146
0
  return *this;
147
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--()
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--()
148
template <class Atom_, class Mol_>
149
0
AtomIterator_<Atom_, Mol_> AtomIterator_<Atom_, Mol_>::operator--(int) {
150
0
  AtomIterator_<Atom_, Mol_> res(*this);
151
0
  if (_pos - 1 < 0) {
152
0
    _pos = _max;
153
0
  } else {
154
0
    _pos--;
155
0
  }
156
0
  return res;
157
0
}
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--(int)
Unexecuted instantiation: RDKit::AtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--(int)
158
159
//-----------------------------------------
160
//
161
//  HeteroatomIterator
162
//
163
//-----------------------------------------
164
template <class Atom_, class Mol_>
165
0
HeteroatomIterator_<Atom_, Mol_>::HeteroatomIterator_(Mol_ *mol) {
166
0
  _mol = mol;
167
0
  _qA = new QueryAtom(6);
168
0
  _qA->getQuery()->setNegation(true);
169
0
  _end = mol->getNumAtoms();
170
0
  _pos = _findNext(0);
171
0
};
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::HeteroatomIterator_(RDKit::ROMol*)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::HeteroatomIterator_(RDKit::ROMol const*)
172
template <class Atom_, class Mol_>
173
0
HeteroatomIterator_<Atom_, Mol_>::HeteroatomIterator_(Mol_ *mol, int pos) {
174
0
  _mol = mol;
175
0
  _qA = new QueryAtom(6);
176
0
  _end = mol->getNumAtoms();
177
0
  _pos = pos;
178
0
};
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::HeteroatomIterator_(RDKit::ROMol*, int)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::HeteroatomIterator_(RDKit::ROMol const*, int)
179
180
template <class Atom_, class Mol_>
181
0
HeteroatomIterator_<Atom_, Mol_>::~HeteroatomIterator_() {
182
0
  delete _qA;
183
0
  _qA = nullptr;
184
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::~HeteroatomIterator_()
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::~HeteroatomIterator_()
185
186
template <class Atom_, class Mol_>
187
0
HeteroatomIterator_<Atom_, Mol_>::HeteroatomIterator_(const ThisType &other) {
188
0
  _mol = other._mol;
189
0
  _end = other._end;
190
0
  _pos = other._pos;
191
0
  _qA = static_cast<QueryAtom *>(other._qA->copy());
192
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::HeteroatomIterator_(RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::HeteroatomIterator_(RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
193
194
template <class Atom_, class Mol_>
195
HeteroatomIterator_<Atom_, Mol_> &HeteroatomIterator_<Atom_, Mol_>::operator=(
196
0
    const ThisType &other) {
197
0
  _mol = other._mol;
198
0
  _end = other._end;
199
0
  _pos = other._pos;
200
0
  _qA = static_cast<QueryAtom *>(other._qA->copy());
201
0
  return *this;
202
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator=(RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator=(RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
203
204
template <class Atom_, class Mol_>
205
0
bool HeteroatomIterator_<Atom_, Mol_>::operator==(const ThisType &other) const {
206
0
  return _mol == other._mol && _pos == other._pos;
207
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator==(RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator==(RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
208
template <class Atom_, class Mol_>
209
0
bool HeteroatomIterator_<Atom_, Mol_>::operator!=(const ThisType &other) const {
210
0
  return _mol != other._mol || _pos != other._pos;
211
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator!=(RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator!=(RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
212
213
template <class Atom_, class Mol_>
214
0
Atom_ *HeteroatomIterator_<Atom_, Mol_>::operator*() const {
215
0
  PRECONDITION(_mol != nullptr, "no molecule");
216
0
  return (*_mol)[_pos];
217
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator*() const
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator*() const
218
// pre-increment
219
template <class Atom_, class Mol_>
220
HeteroatomIterator_<Atom_, Mol_> &
221
0
HeteroatomIterator_<Atom_, Mol_>::operator++() {
222
0
  _pos = _findNext(_pos + 1);
223
0
  return *this;
224
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator++()
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++()
225
template <class Atom_, class Mol_>
226
HeteroatomIterator_<Atom_, Mol_> HeteroatomIterator_<Atom_, Mol_>::operator++(
227
0
    int) {
228
0
  HeteroatomIterator_<Atom_, Mol_> res(*this);
229
0
  _pos = _findNext(_pos + 1);
230
0
  return res;
231
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator++(int)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++(int)
232
// pre-decrement
233
template <class Atom_, class Mol_>
234
HeteroatomIterator_<Atom_, Mol_> &
235
0
HeteroatomIterator_<Atom_, Mol_>::operator--() {
236
0
  _pos = _findPrev(_pos - 1);
237
0
  return *this;
238
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator--()
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--()
239
template <class Atom_, class Mol_>
240
HeteroatomIterator_<Atom_, Mol_> HeteroatomIterator_<Atom_, Mol_>::operator--(
241
0
    int) {
242
0
  HeteroatomIterator_<Atom_, Mol_> res(*this);
243
0
  _pos = _findPrev(_pos - 1);
244
0
  return res;
245
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::operator--(int)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--(int)
246
template <class Atom_, class Mol_>
247
0
int HeteroatomIterator_<Atom_, Mol_>::_findNext(int from) {
248
0
  while (from < _end) {
249
0
    if (_qA->Match((*_mol)[from])) {
250
0
      break;
251
0
    } else {
252
0
      from++;
253
0
    }
254
0
  }
255
0
  return from;
256
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::_findNext(int)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findNext(int)
257
258
template <class Atom_, class Mol_>
259
0
int HeteroatomIterator_<Atom_, Mol_>::_findPrev(int from) {
260
0
  while (from > 0) {
261
0
    if (_qA->Match((*_mol)[from])) {
262
0
      break;
263
0
    } else {
264
0
      from--;
265
0
    }
266
0
  }
267
0
  if (from < 0) {
268
0
    from = _end;
269
0
  }
270
0
  return from;
271
0
}
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom, RDKit::ROMol>::_findPrev(int)
Unexecuted instantiation: RDKit::HeteroatomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findPrev(int)
272
273
//-----------------------------------------
274
//
275
//  AromaticAtomIterator
276
//
277
//-----------------------------------------
278
template <class Atom_, class Mol_>
279
0
AromaticAtomIterator_<Atom_, Mol_>::AromaticAtomIterator_(Mol_ *mol) {
280
0
  _mol = mol;
281
0
  _end = mol->getNumAtoms();
282
0
  _pos = _findNext(0);
283
0
};
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::AromaticAtomIterator_(RDKit::ROMol*)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::AromaticAtomIterator_(RDKit::ROMol const*)
284
template <class Atom_, class Mol_>
285
0
AromaticAtomIterator_<Atom_, Mol_>::AromaticAtomIterator_(Mol_ *mol, int pos) {
286
0
  _mol = mol;
287
0
  _end = mol->getNumAtoms();
288
0
  _pos = pos;
289
0
};
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::AromaticAtomIterator_(RDKit::ROMol*, int)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::AromaticAtomIterator_(RDKit::ROMol const*, int)
290
291
template <class Atom_, class Mol_>
292
0
AromaticAtomIterator_<Atom_, Mol_>::~AromaticAtomIterator_() {}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::~AromaticAtomIterator_()
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::~AromaticAtomIterator_()
293
294
template <class Atom_, class Mol_>
295
AromaticAtomIterator_<Atom_, Mol_>::AromaticAtomIterator_(
296
0
    const ThisType &other) {
297
0
  _mol = other._mol;
298
0
  _end = other._end;
299
0
  _pos = other._pos;
300
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::AromaticAtomIterator_(RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::AromaticAtomIterator_(RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
301
302
template <class Atom_, class Mol_>
303
AromaticAtomIterator_<Atom_, Mol_> &
304
0
AromaticAtomIterator_<Atom_, Mol_>::operator=(const ThisType &other) {
305
0
  _mol = other._mol;
306
0
  _end = other._end;
307
0
  _pos = other._pos;
308
0
  return *this;
309
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator=(RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator=(RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
310
311
template <class Atom_, class Mol_>
312
bool AromaticAtomIterator_<Atom_, Mol_>::operator==(
313
0
    const ThisType &other) const {
314
0
  return _mol == other._mol && _pos == other._pos;
315
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator==(RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator==(RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
316
template <class Atom_, class Mol_>
317
bool AromaticAtomIterator_<Atom_, Mol_>::operator!=(
318
0
    const ThisType &other) const {
319
0
  return _mol != other._mol || _pos != other._pos;
320
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator!=(RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator!=(RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
321
322
template <class Atom_, class Mol_>
323
0
Atom_ *AromaticAtomIterator_<Atom_, Mol_>::operator*() const {
324
0
  PRECONDITION(_mol != nullptr, "no molecule");
325
0
  return (*_mol)[_pos];
326
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator*() const
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator*() const
327
// pre-increment
328
template <class Atom_, class Mol_>
329
AromaticAtomIterator_<Atom_, Mol_> &
330
0
AromaticAtomIterator_<Atom_, Mol_>::operator++() {
331
0
  _pos = _findNext(_pos + 1);
332
0
  return *this;
333
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++()
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++()
334
template <class Atom_, class Mol_>
335
AromaticAtomIterator_<Atom_, Mol_>
336
0
AromaticAtomIterator_<Atom_, Mol_>::operator++(int) {
337
0
  AromaticAtomIterator_<Atom_, Mol_> res(*this);
338
0
  _pos = _findNext(_pos + 1);
339
0
  return res;
340
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++(int)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++(int)
341
// pre-decrement
342
template <class Atom_, class Mol_>
343
AromaticAtomIterator_<Atom_, Mol_> &
344
0
AromaticAtomIterator_<Atom_, Mol_>::operator--() {
345
0
  _pos = _findPrev(_pos - 1);
346
0
  return *this;
347
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--()
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--()
348
template <class Atom_, class Mol_>
349
AromaticAtomIterator_<Atom_, Mol_>
350
0
AromaticAtomIterator_<Atom_, Mol_>::operator--(int) {
351
0
  AromaticAtomIterator_<Atom_, Mol_> res(*this);
352
0
  _pos = _findPrev(_pos - 1);
353
0
  return res;
354
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--(int)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--(int)
355
template <class Atom_, class Mol_>
356
0
int AromaticAtomIterator_<Atom_, Mol_>::_findNext(int from) {
357
0
  while (from < _end) {
358
0
    if ((*_mol)[from]->getIsAromatic()) {
359
0
      break;
360
0
    } else {
361
0
      from++;
362
0
    }
363
0
  }
364
0
  return from;
365
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::_findNext(int)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findNext(int)
366
367
template <class Atom_, class Mol_>
368
0
int AromaticAtomIterator_<Atom_, Mol_>::_findPrev(int from) {
369
0
  while (from > 0) {
370
0
    if ((*_mol)[from]->getIsAromatic()) {
371
0
      break;
372
0
    } else {
373
0
      from--;
374
0
    }
375
0
  }
376
0
  if (from < 0) {
377
0
    from = _end;
378
0
  }
379
0
  return from;
380
0
}
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom, RDKit::ROMol>::_findPrev(int)
Unexecuted instantiation: RDKit::AromaticAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findPrev(int)
381
382
//-----------------------------------------
383
//
384
//  QueryAtomIterator
385
//
386
//-----------------------------------------
387
template <class Atom_, class Mol_>
388
QueryAtomIterator_<Atom_, Mol_>::QueryAtomIterator_(Mol_ *mol,
389
0
                                                    Atom const *what) {
390
0
  PRECONDITION(what, "bad query atom");
391
0
  if (hasUninitializedRecursiveQuery(*what)) {
392
0
    throw ValueErrorException(
393
0
        "QueryAtomIterator does not support uninitialized recursive queries");
394
0
  }
395
0
  _mol = mol;
396
0
  _qA = new QueryAtom(*what);
397
0
  _end = mol->getNumAtoms();
398
0
  _pos = _findNext(0);
399
0
};
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::QueryAtomIterator_(RDKit::ROMol*, RDKit::Atom const*)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::QueryAtomIterator_(RDKit::ROMol const*, RDKit::Atom const*)
400
template <class Atom_, class Mol_>
401
0
QueryAtomIterator_<Atom_, Mol_>::QueryAtomIterator_(Mol_ *mol, int pos) {
402
0
  _mol = mol;
403
0
  _qA = nullptr;
404
0
  _end = mol->getNumAtoms();
405
0
  _pos = pos;
406
0
};
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::QueryAtomIterator_(RDKit::ROMol*, int)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::QueryAtomIterator_(RDKit::ROMol const*, int)
407
template <class Atom_, class Mol_>
408
0
QueryAtomIterator_<Atom_, Mol_>::~QueryAtomIterator_() {
409
0
  delete _qA;
410
0
  _qA = nullptr;
411
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::~QueryAtomIterator_()
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::~QueryAtomIterator_()
412
template <class Atom_, class Mol_>
413
QueryAtomIterator_<Atom_, Mol_>::QueryAtomIterator_(
414
0
    const QueryAtomIterator_<Atom_, Mol_> &other) {
415
0
  _mol = other._mol;
416
0
  _pos = other._pos;
417
0
  _end = other._end;
418
0
  if (other._qA) {
419
0
    _qA = static_cast<QueryAtom *>(other._qA->copy());
420
0
  } else {
421
0
    _qA = nullptr;
422
0
  }
423
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::QueryAtomIterator_(RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::QueryAtomIterator_(RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
424
425
template <class Atom_, class Mol_>
426
QueryAtomIterator_<Atom_, Mol_> &QueryAtomIterator_<Atom_, Mol_>::operator=(
427
0
    const QueryAtomIterator_<Atom_, Mol_> &other) {
428
0
  if (this != &other) {
429
0
    _mol = other._mol;
430
0
    _pos = other._pos;
431
0
    _end = other._end;
432
0
    delete _qA;
433
0
    if (other._qA) {
434
0
      _qA = static_cast<QueryAtom *>(other._qA->copy());
435
0
    } else {
436
0
      _qA = nullptr;
437
0
    }
438
0
  }
439
0
  return *this;
440
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator=(RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator=(RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
441
template <class Atom_, class Mol_>
442
bool QueryAtomIterator_<Atom_, Mol_>::operator==(
443
0
    const QueryAtomIterator_<Atom_, Mol_> &other) const {
444
0
  return _mol == other._mol && _pos == other._pos;
445
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator==(RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator==(RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
446
template <class Atom_, class Mol_>
447
bool QueryAtomIterator_<Atom_, Mol_>::operator!=(
448
0
    const QueryAtomIterator_<Atom_, Mol_> &other) const {
449
0
  return _mol != other._mol || _pos != other._pos;
450
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator!=(RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator!=(RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
451
452
template <class Atom_, class Mol_>
453
0
Atom_ *QueryAtomIterator_<Atom_, Mol_>::operator*() const {
454
0
  PRECONDITION(_mol != nullptr, "no molecule");
455
0
  return (*_mol)[_pos];
456
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator*() const
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator*() const
457
// pre-increment
458
template <class Atom_, class Mol_>
459
0
QueryAtomIterator_<Atom_, Mol_> &QueryAtomIterator_<Atom_, Mol_>::operator++() {
460
0
  _pos = _findNext(_pos + 1);
461
0
  return *this;
462
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++()
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++()
463
template <class Atom_, class Mol_>
464
QueryAtomIterator_<Atom_, Mol_> QueryAtomIterator_<Atom_, Mol_>::operator++(
465
0
    int) {
466
0
  QueryAtomIterator_ res(*this);
467
0
  _pos = _findNext(_pos + 1);
468
0
  return res;
469
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++(int)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++(int)
470
// pre-decrement
471
template <class Atom_, class Mol_>
472
0
QueryAtomIterator_<Atom_, Mol_> &QueryAtomIterator_<Atom_, Mol_>::operator--() {
473
0
  _pos = _findPrev(_pos - 1);
474
0
  return *this;
475
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--()
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--()
476
template <class Atom_, class Mol_>
477
QueryAtomIterator_<Atom_, Mol_> QueryAtomIterator_<Atom_, Mol_>::operator--(
478
0
    int) {
479
0
  QueryAtomIterator_<Atom_, Mol_> res(*this);
480
0
  _pos = _findPrev(_pos - 1);
481
0
  return res;
482
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--(int)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--(int)
483
template <class Atom_, class Mol_>
484
0
int QueryAtomIterator_<Atom_, Mol_>::_findNext(int from) {
485
0
  PRECONDITION(_mol != nullptr, "no molecule");
486
0
  PRECONDITION(_qA != nullptr, "no query set");
487
0
  while (from < _end) {
488
0
    if (_qA->Match((*_mol)[from])) {
489
0
      break;
490
0
    } else {
491
0
      from++;
492
0
    }
493
0
  }
494
0
  return from;
495
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::_findNext(int)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findNext(int)
496
497
template <class Atom_, class Mol_>
498
0
int QueryAtomIterator_<Atom_, Mol_>::_findPrev(int from) {
499
0
  PRECONDITION(_mol != nullptr, "no molecule");
500
0
  PRECONDITION(_qA != nullptr, "no query set");
501
0
  while (from > 0) {
502
0
    if (_qA->Match((*_mol)[from])) {
503
0
      break;
504
0
    } else {
505
0
      from--;
506
0
    }
507
0
  }
508
0
  if (from < 0) {
509
0
    from = _end;
510
0
  }
511
0
  return from;
512
0
}
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom, RDKit::ROMol>::_findPrev(int)
Unexecuted instantiation: RDKit::QueryAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findPrev(int)
513
514
//-----------------------------------------
515
//
516
//  MatchingAtomIterator
517
//
518
//-----------------------------------------
519
template <class Atom_, class Mol_>
520
MatchingAtomIterator_<Atom_, Mol_>::MatchingAtomIterator_(Mol_ *mol,
521
0
                                                          bool (*fn)(Atom_ *)) {
522
0
  PRECONDITION(fn, "bad query function");
523
0
  _mol = mol;
524
0
  _qF = fn;
525
0
  _end = mol->getNumAtoms();
526
0
  _pos = _findNext(0);
527
0
};
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::MatchingAtomIterator_(RDKit::ROMol*, bool (*)(RDKit::Atom*))
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::MatchingAtomIterator_(RDKit::ROMol const*, bool (*)(RDKit::Atom const*))
528
template <class Atom_, class Mol_>
529
0
MatchingAtomIterator_<Atom_, Mol_>::MatchingAtomIterator_(Mol_ *mol, int pos) {
530
0
  _mol = mol;
531
0
  _qF = nullptr;
532
0
  _end = mol->getNumAtoms();
533
0
  _pos = pos;
534
0
};
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::MatchingAtomIterator_(RDKit::ROMol*, int)
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::MatchingAtomIterator_(RDKit::ROMol const*, int)
535
536
template <class Atom_, class Mol_>
537
0
MatchingAtomIterator_<Atom_, Mol_>::~MatchingAtomIterator_() {}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::~MatchingAtomIterator_()
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::~MatchingAtomIterator_()
538
539
template <class Atom_, class Mol_>
540
MatchingAtomIterator_<Atom_, Mol_>::MatchingAtomIterator_(
541
0
    const MatchingAtomIterator_<Atom_, Mol_> &other) {
542
0
  _mol = other._mol;
543
0
  _pos = other._pos;
544
0
  _end = other._end;
545
0
  _qF = other._qF;
546
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::MatchingAtomIterator_(RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::MatchingAtomIterator_(RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
547
548
template <class Atom_, class Mol_>
549
MatchingAtomIterator_<Atom_, Mol_> &
550
MatchingAtomIterator_<Atom_, Mol_>::operator=(
551
0
    const MatchingAtomIterator_<Atom_, Mol_> &other) {
552
0
  if (this != &other) {
553
0
    _mol = other._mol;
554
0
    _pos = other._pos;
555
0
    _end = other._end;
556
0
    _qF = other._qF;
557
0
  }
558
0
  return *this;
559
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator=(RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol> const&)
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator=(RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&)
560
template <class Atom_, class Mol_>
561
bool MatchingAtomIterator_<Atom_, Mol_>::operator==(
562
0
    const MatchingAtomIterator_<Atom_, Mol_> &other) const {
563
0
  return _mol == other._mol && _pos == other._pos;
564
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator==(RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator==(RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
565
template <class Atom_, class Mol_>
566
bool MatchingAtomIterator_<Atom_, Mol_>::operator!=(
567
0
    const MatchingAtomIterator_<Atom_, Mol_> &other) const {
568
0
  return _mol != other._mol || _pos != other._pos;
569
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator!=(RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol> const&) const
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator!=(RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const> const&) const
570
571
template <class Atom_, class Mol_>
572
0
Atom_ *MatchingAtomIterator_<Atom_, Mol_>::operator*() const {
573
0
  PRECONDITION(_mol != nullptr, "no molecule");
574
0
  return (*_mol)[_pos];
575
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator*() const
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator*() const
576
// pre-increment
577
template <class Atom_, class Mol_>
578
MatchingAtomIterator_<Atom_, Mol_> &
579
0
MatchingAtomIterator_<Atom_, Mol_>::operator++() {
580
0
  _pos = _findNext(_pos + 1);
581
0
  return *this;
582
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++()
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++()
583
template <class Atom_, class Mol_>
584
MatchingAtomIterator_<Atom_, Mol_>
585
0
MatchingAtomIterator_<Atom_, Mol_>::operator++(int) {
586
0
  MatchingAtomIterator_ res(*this);
587
0
  _pos = _findNext(_pos + 1);
588
0
  return res;
589
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator++(int)
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator++(int)
590
// pre-decrement
591
template <class Atom_, class Mol_>
592
MatchingAtomIterator_<Atom_, Mol_> &
593
0
MatchingAtomIterator_<Atom_, Mol_>::operator--() {
594
0
  _pos = _findPrev(_pos - 1);
595
0
  return *this;
596
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--()
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--()
597
template <class Atom_, class Mol_>
598
MatchingAtomIterator_<Atom_, Mol_>
599
0
MatchingAtomIterator_<Atom_, Mol_>::operator--(int) {
600
0
  MatchingAtomIterator_<Atom_, Mol_> res(*this);
601
0
  _pos = _findPrev(_pos - 1);
602
0
  return res;
603
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::operator--(int)
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::operator--(int)
604
template <class Atom_, class Mol_>
605
0
int MatchingAtomIterator_<Atom_, Mol_>::_findNext(int from) {
606
0
  PRECONDITION(_mol != nullptr, "no molecule");
607
0
  PRECONDITION(_qF != nullptr, "no query set");
608
0
  while (from < _end) {
609
0
    if (_qF((*_mol)[from])) {
610
0
      break;
611
0
    } else {
612
0
      ++from;
613
0
    }
614
0
  }
615
0
  return from;
616
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::_findNext(int)
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findNext(int)
617
618
template <class Atom_, class Mol_>
619
0
int MatchingAtomIterator_<Atom_, Mol_>::_findPrev(int from) {
620
0
  PRECONDITION(_mol != nullptr, "no molecule");
621
0
  PRECONDITION(_qF != nullptr, "no query set");
622
0
  while (from > 0) {
623
0
    if (_qF((*_mol)[from])) {
624
0
      break;
625
0
    } else {
626
0
      --from;
627
0
    }
628
0
  }
629
0
  if (from < 0) {
630
0
    from = _end;
631
0
  }
632
0
  return from;
633
0
}
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom, RDKit::ROMol>::_findPrev(int)
Unexecuted instantiation: RDKit::MatchingAtomIterator_<RDKit::Atom const, RDKit::ROMol const>::_findPrev(int)
634
635
template class AtomIterator_<Atom, ROMol>;
636
template class AtomIterator_<const Atom, const ROMol>;
637
638
template class AromaticAtomIterator_<Atom, ROMol>;
639
template class AromaticAtomIterator_<const Atom, const ROMol>;
640
template class HeteroatomIterator_<Atom, ROMol>;
641
template class HeteroatomIterator_<const Atom, const ROMol>;
642
template class QueryAtomIterator_<Atom, ROMol>;
643
template class QueryAtomIterator_<const Atom, const ROMol>;
644
template class MatchingAtomIterator_<Atom, ROMol>;
645
template class MatchingAtomIterator_<const Atom, const ROMol>;
646
647
};  // namespace RDKit