=encoding utf8 =head1 NAME Module::Generic::Iterator - An Array Iterator Object Class =head1 SYNOPSIS my $i = Module::Generic::Iterator->new( [qw( Joe John Mary )] ); # or also: my $a = Module::Generic::Array->new( [qw( Joe John Mary )] ); my $i = $a->iterator; while( $i->has_next ) { my $elem = $i->next; my $value = $elem->value; # Get the next element relative to our element printf( "Next value is: %s at offset %d\n", $elem->next, $elem->next->pos ); } =head1 VERSION v1.1.1 =head1 DESCRIPTION This provides an object oriented array iterator. Each of its elements are L<Module::Generic::Iterator::Element> object =head1 METHODS =head2 new Provided with an array reference or an L<Module::Generic::Array> object, and this will create a new iterator and return it. =head2 elements Contains the array elements =head2 eof Returns true if the position in the iterator has reached the end of the array. =head2 find Creates a clone of the current array object and returns it.Provided wit an array element and this returns its position in the array starting at 0. If nothing was found, this returns undef. =head2 first Returns the first element of the array. =head2 has_next Returns true if there is another item after the current one. =head2 has_prev Returns true if there is another item before the current one. =head2 last Returns the last element of the array. =head2 length Returns the size of the array, starting from 1, as a L<Module::Generic::Number> object. =head2 next Returns the next L<Module::Generic::Iterator::Element> object or undef if there are no more element. =head2 pos Sets or returns the current position in the array. This is an lvalue method. $e->pos = 10; # Sets the current position to 10 my $pos = $e->pos; # Returns the current position =head2 prev Returns the previous L<Module::Generic::Iterator::Element> object or undef if there are no more previous element. =head2 reset Reset the position inside the array and sets it to 0. =head2 _find_pos Provided with an item, this returns its position in the array or undef if it is not in the array. =head1 SERIALISATION =for Pod::Coverage FREEZE =for Pod::Coverage STORABLE_freeze =for Pod::Coverage STORABLE_thaw =for Pod::Coverage THAW =for Pod::Coverage TO_JSON Serialisation by L<CBOR|CBOR::XS>, L<Sereal> and L<Storable::Improved> (or the legacy L<Storable>) is supported by this package. To that effect, the following subroutines are implemented: C<FREEZE>, C<THAW>, C<STORABLE_freeze> and C<STORABLE_thaw> =head1 SEE ALSO L<Module::Generic::Iterator::Element>, L<Module::Generic::Array> =head1 AUTHOR Jacques Deguest E<lt>F<jack@deguest.jp>E<gt> =head1 COPYRIGHT & LICENSE Copyright (c) 2000-2024 DEGUEST Pte. Ltd. You can use, copy, modify and redistribute this package and associated files under the same terms as Perl itself. =cut