130 if ((index > r->m_end) || (index < r->m_start))
134 if (r->m_start == r->m_end)
136 else if (r->m_start == index)
138 else if (r->m_end == index)
142 Range split(r->m_start, index - 1);
143 r->m_start = index + 1;
144 m_queue.insert(--(r.base()), split);
158 auto const& i =
m_queue.front();
159 m_count -= (i.m_end - i.m_start) + 1;
165 JLDEBUGG(
"Removed upto: " << upto <<
", now empty");
169 if (
m_queue.front().m_start <= upto)
172 m_queue.front().m_start = upto + 1;
174 JLDEBUGG(
"Removed upto: " << upto <<
", new first = " <<
m_queue.front().m_start);
185 auto const& i =
m_queue.back();
186 m_count -= (i.m_end - i.m_start) + 1;
192 JLDEBUGG(
"Removed upto: " << upto <<
", now empty");
196 if (
m_queue.back().m_end >= upto)
199 m_queue.back().m_end = upto - 1;
201 JLDEBUGG(
"Removed upto: " << upto <<
", new last = " <<
m_queue.back().m_end);
211 return m_queue.front().m_start;
240 std::size_t range = index / 2;
248 for (
uint32_t i = 0; i < range; ++i)
264 if ((index >= i->m_start) && (index <= i->m_end))
284 m_count += (i->m_end - i->m_start) + 1;
313 if ((i->m_start >=
start && start <= i->m_end) && (i->m_start <= end))
314 destination.
pushBack(i->m_start, std::min<T>(i->m_end, end));
315 else if (i->m_start <
start && i->m_start < end)