git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8683 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2006-02-02 23:13:54 +00:00
commit 31915bb0d5
2 changed files with 24 additions and 5 deletions

View file

@ -102,3 +102,12 @@ pv = pyvector([1, "hello", (1,2)])
if pv[1] != "hello":
raise RuntimeError
iv = IntVector(5)
for i in range(0,5):
iv[i] = i
iv[1:3] = []
if iv[1] != 3:
raise RuntimeError

View file

@ -239,11 +239,21 @@ namespace swig {
typename Sequence::size_type ii = swig::check_index(i, size, true);
typename Sequence::size_type jj = swig::slice_index(j, size);
if (jj < ii) jj = ii;
typename Sequence::iterator sb = self->begin();
typename InputSeq::const_iterator vmid = v.begin();
std::advance(sb,ii);
std::advance(vmid, jj - ii);
self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end());
size_t ssize = jj - ii;
if (ssize <= v.size()) {
typename Sequence::iterator sb = self->begin();
typename InputSeq::const_iterator vmid = v.begin();
std::advance(sb,ii);
std::advance(vmid, jj - ii);
self->insert(std::copy(v.begin(), vmid, sb), vmid, v.end());
} else {
typename Sequence::iterator sb = self->begin();
typename Sequence::iterator se = self->begin();
std::advance(sb,ii);
std::advance(se,jj);
self->erase(sb,se);
self->insert(sb, v.begin(), v.end());
}
}
template <class Sequence, class Difference>