@@ -30,24 +30,36 @@ last = NULL; return self; } -- (id)nextObject -{ - if (last == NULL) { - for (; pos < size && data[pos] == nil; pos++); - if (pos == size) - return nil; - - return (last = [data[pos++] first])->object; - } - - if ((last = last->next) != NULL) - return last->object; - - return [self nextObject]; +- (of_iterator_pair_t)nextKeyObjectPair +{ + of_iterator_pair_t next; + + for (;;) { + if (last == NULL) { + for (; pos < size && data[pos] == nil; pos++); + if (pos == size) { + next.key = nil; + next.object = nil; + return next; + } + + last = (of_dictionary_list_object_t*) + [data[pos++] first]; + next.key = last->key; + next.object = last->object; + return next; + } + + if ((last = last->next) != NULL) { + next.key = last->key; + next.object = last->object; + return next; + } + } } - reset { pos = 0;