| 4320 | |
| 4321 | template <class Sequence, class Difference, class InputSeq> |
| 4322 | inline void |
| 4323 | setslice(Sequence* self, Difference i, Difference j, const InputSeq& v = InputSeq()) { |
| 4324 | typename Sequence::size_type size = self->size(); |
| 4325 | typename Sequence::size_type ii = swig::check_index(i, size, true); |
| 4326 | typename Sequence::size_type jj = swig::slice_index(j, size); |
| 4327 | if (jj < ii) jj = ii; |
| 4328 | size_t ssize = jj - ii; |
| 4329 | if (ssize <= v.size()) { |
| 4330 | typename Sequence::iterator sb = self->begin(); |
| 4331 | typename InputSeq::const_iterator vmid = v.begin(); |
| 4332 | std::advance(sb,ii); |
| 4333 | std::advance(vmid, jj - ii); |
| 4334 | self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end()); |
| 4335 | } else { |
| 4336 | typename Sequence::iterator sb = self->begin(); |
| 4337 | typename Sequence::iterator se = self->begin(); |
| 4338 | std::advance(sb,ii); |
| 4339 | std::advance(se,jj); |
| 4340 | self->erase(sb,se); |
| 4341 | self->insert(sb, v.begin(), v.end()); |
| 4342 | } |
| 4343 | } |
| 4344 | |
| 4345 | template <class Sequence, class Difference> |
| 4346 | inline void |
no test coverage detected