On 2 June 2011 17:05, Sebastian Spaeth <Sebastian@sspaeth.de> wrote:
What would be the best way to solve this (besides fixing the C api to
allow to reset the iterator ;-) ?)


 I am not really familiar with the code. So am I correct in making the following assumptions?

* It is not easy to fix the C api to reset the iterator (what about repeating the search?)

* The only accurate way to get the number of messages is to iterate through every search result and count them?

If so, then len(...) I think might be very slow if there are a large number of elements.

Maybe it might be easier/better to implement object.__nonzero__(self)  instead of the object.__len__(self) method?

http://docs.python.org/reference/datamodel.html

object.__nonzero__(self)
Called to implement truth value testing and the built-in operation bool(); should return False or True, or their integer equivalents 0 or 1. When this method is not defined, __len__() is called, if it is defined, and the object is considered true if its result is nonzero. If a class defines neither __len__() nor __nonzero__(), all its instances are considered true.

object.__len__(self)
Called to implement the built-in function len(). Should return the length of the object, an integer >= 0. Also, an object that doesn’t define a __nonzero__() method and whose __len__() method returns zero is considered to be false in a Boolean context.

--
Brian May <brian@microcomaustralia.com.au>