python::list iterator support

Arnaldur Gylfason arnaldur at decode.is
Thu Dec 20 13:28:24 CET 2001


--0__=00256B280043C4358f9e8a93df938690918c00256B280043C435
Content-type: text/plain; charset=us-ascii


Hi

I have added iterator support for list.
Here is the code (list_iter.hpp) (See attached file: list_iter.hpp)
It has just the additions. All previous stuff in list has been deleted.
Add this to objects.hpp.
I have tested it using:

     python::ref test_listiter()
     {
          python::list mylist;
          for(int i = 0;i < 10;++i)
               mylist.append(i);

          int sum = 0;
          for(python::list::iterator it = mylist.begin();it != mylist.end
();++it)
          {
               sum += static_cast<int>(*it);
          }

          //cout << typeid(python::list::iterator::reference).name();

          cout << "Sum: " << sum;

          for(python::list::iterator it = mylist.begin();it != mylist.end
();++it)
          {
               *it = static_cast<int>(*it)*10;
          }

          return mylist;

     }

which worked correctly.

When number has been added, it will be easier to use.
(e.g. could not use std::accumulate. Would have to explicitly type cast
it.)
Will work on that later.

Note. If operator[]  returns iterator_proxy it will probably be a bit
faster.

Cheers

Arnaldur


--0__=00256B280043C4358f9e8a93df938690918c00256B280043C435
Content-type: application/octet-stream; 
	name="list_iter.hpp"
Content-Disposition: attachment; filename="list_iter.hpp"
Content-transfer-encoding: base64

CgpzdHJ1Y3QgbGlzdF9pdGVyYXRvcl9wb2xpY2llcyA6IHB1YmxpYyBib29zdDo6ZGVmYXVsdF9p
dGVyYXRvcl9wb2xpY2llcwp7Cgl0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JBZGFwdG9yPgoJdHlw
ZW5hbWUgSXRlcmF0b3JBZGFwdG9yOjpyZWZlcmVuY2UgZGVyZWZlcmVuY2UoY29uc3QgSXRlcmF0
b3JBZGFwdG9yJiBpdGVyKSBjb25zdAoJewoJCXR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JBZGFw
dG9yOjpyZWZlcmVuY2UgcmVzdWx0X3Q7CgkJcmV0dXJuIHJlc3VsdF90KGl0ZXIuYmFzZSgpKTsK
CX0KICAKfTsKCgpjbGFzcyBsaXN0IDogcHVibGljIG9iamVjdF9iYXNlCnsKCSBzdHJ1Y3QgaXRl
cmF0b3JfcHJveHkgOiBwdWJsaWMgc2VxbWFwCgkgewoJCSBleHBsaWNpdCBpdGVyYXRvcl9wcm94
eShQeU9iamVjdCoqIF9iYXNlKSA6IG9iamVjdChyZWYoKl9iYXNlKSkgLCBzZXFtYXAob2JqZWN0
OjpyZWZlcmVuY2UoKSkgLCBiYXNlKF9iYXNlKSB7IH0KCQkgCgkJdGVtcGxhdGU8Y2xhc3MgVD4K
CQlpdGVyYXRvcl9wcm94eSYgb3BlcmF0b3I9KGNvbnN0IFQmIHJocykKCQl7CgkJCXJlc2V0KG1h
a2VfcmVmKHJocykpOwoJCQkqYmFzZSA9IGdldCgpOwoJCQlyZXR1cm4gKnRoaXM7CgkJfQoKCQlp
dGVyYXRvcl9wcm94eSYgb3BlcmF0b3I9KGNvbnN0IGl0ZXJhdG9yX3Byb3h5JiByaHMpCgkJewoJ
CQlyZXNldChyaHMucmVmZXJlbmNlKCkpOwoJCQkqYmFzZSA9IGdldCgpOwoJCQlyZXR1cm4gKnRo
aXM7CgkJfQoJCQoJCXByaXZhdGU6CgkJCVB5T2JqZWN0KiogYmFzZTsKCSB9OwoJIAogcHVibGlj
OgogCiAJIHR5cGVkZWYgYm9vc3Q6Oml0ZXJhdG9yX2FkYXB0b3I8UHlPYmplY3QqKixsaXN0X2l0
ZXJhdG9yX3BvbGljaWVzLAogCSAJCQkJCQkJCQkJCWJvb3N0OjppdGVyYXRvcl9jYXRlZ29yeV9p
czxzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZz4sCiAJIAkJCQkJCQkJCQkJYm9vc3Q6OnZhbHVlX3R5
cGVfaXM8aXRlcmF0b3JfcHJveHk+LAogCSAJCQkJCQkJCQkJCWJvb3N0OjpyZWZlcmVuY2VfaXM8
aXRlcmF0b3JfcHJveHk+ID4gaXRlcmF0b3I7CgogCSB0eXBlZGVmIGJvb3N0OjppdGVyYXRvcl9h
ZGFwdG9yPFB5T2JqZWN0KiosbGlzdF9pdGVyYXRvcl9wb2xpY2llcywKIAkgCQkJCQkJCQkJCQli
b29zdDo6aXRlcmF0b3JfY2F0ZWdvcnlfaXM8c3RkOjppbnB1dF9pdGVyYXRvcl90YWc+LAogCSAJ
CQkJCQkJCQkJCWJvb3N0Ojp2YWx1ZV90eXBlX2lzPGNvbnN0IGl0ZXJhdG9yX3Byb3h5PiwKIAkg
CQkJCQkJCQkJCQlib29zdDo6cmVmZXJlbmNlX2lzPGNvbnN0IGl0ZXJhdG9yX3Byb3h5PiA+IGNv
bnN0X2l0ZXJhdG9yOwogCgogICAgCiAgICBpdGVyYXRvciBiZWdpbigpCiAgICB7CgkJIHJldHVy
biBpdGVyYXRvcihyZWludGVycHJldF9jYXN0PFB5TGlzdE9iamVjdCo+KGdldCgpKS0+b2JfaXRl
bSk7CgkgfQoKICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QKICAgIHsKCQkgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8UHlMaXN0T2JqZWN0Kj4oZ2V0KCkpLT5v
Yl9pdGVtKTsKCSB9CgogICAgaXRlcmF0b3IgZW5kKCkKICAgIHsKCQkgUHlMaXN0T2JqZWN0KiBw
dHJfbGlzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHlMaXN0T2JqZWN0Kj4oZ2V0KCkpOwoJCSByZXR1
cm4gaXRlcmF0b3IocHRyX2xpc3QtPm9iX2l0ZW0gKyBwdHJfbGlzdC0+b2Jfc2l6ZSk7CgkgfQoK
ICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0CiAgICB7CgkJIFB5TGlzdE9iamVjdCogcHRy
X2xpc3QgPSByZWludGVycHJldF9jYXN0PFB5TGlzdE9iamVjdCo+KGdldCgpKTsKCQkgcmV0dXJu
IGNvbnN0X2l0ZXJhdG9yKHB0cl9saXN0LT5vYl9pdGVtICsgcHRyX2xpc3QtPm9iX3NpemUpOwoJ
IH0KCn07

--0__=00256B280043C4358f9e8a93df938690918c00256B280043C435--




More information about the Cplusplus-sig mailing list