193{
195
197
199
200 if((andOperation == true) && (a1 == b1)) return 0;
201
203
205
206 if(andOperation == true) {
207 if(a2 == b2) return 0;
208
209
210
211
212
213
214
215
216
218
220 if((b2 != end()) && ((*b2)->data[
offset] < (*a1)->data[
offset]))
return 0;
221 pos1 = a1;
222 }
223 else {
224 if((b1 != end()) && (*a2)->data[
offset] > (*b1)->data[
offset])
return 0;
225 pos1 = a2;
226 }
227
228 if(b2 == end() || b1 == end()) {
229 pos2 = (b2 != end()) ? b2 : b1;
230 }
231 else
232 pos2 = ((*b2)->data[
offset] <= (*b1)->data[
offset]) ? b2 : b1;
233
235 for(;pos1 != pos2; ++pos1) olist->push_back(*pos1);
236 }
237 else {
238 if(a1 != b1 && a2 == b2) {
240 for(;a1 != b1; ++a1) olist->push_back(*a1);
241 }
242 else if(a2 != b2 && a1 == b1) {
244 for(;a2 != b2; ++a2) olist->push_back(*a2);
245 }
246 else if(a1 != b1 && a2 != b2) {
248
249
250
251
252
253
254
255
256
258
260 if(b2 != end() && (*b2)->data[
offset] < (*a1)->data[
offset]) {
261 for(;a2 != b2; ++a2) olist->push_back(*a2);
262 for(;a1 != b1; ++a1) olist->push_back(*a1);
263
264 return olist;
265 }
266
267 pos1 = a2;
268 }
269 else {
270 if(b1 != end() && (*a2)->data[
offset] > (*b1)->data[
offset]) {
271 for(;a1 != b1; ++a1) olist->push_back(*a1);
272 for(;a2 != b2; ++a2) olist->push_back(*a2);
273
274 return olist;
275 }
276
277 pos1 = a1;
278 }
279
280 if(b2 == end() || b1 == end()) {
281 pos2 = (b2 == end()) ? b2 : b1;
282 }
283 else
284 pos2 = ((*b2)->data[
offset] >= (*b1)->data[
offset]) ? b2 : b1;
285
286 for(;pos1 != pos2; ++pos1) olist->push_back(*pos1);
287 }
288 }
289
290 return olist;
291}
std::multiset< OksObject *, OksObjectSortBy >::const_iterator ConstPosition
void find_interval(OksData *, OksQuery::Comparator, ConstPosition &, ConstPosition &) const
std::list< OksObject * > List