use strict;
package Salvation::MacroProcessor::Iterator::Compliance;
use Moose::Role;
requires 'first', 'last', 'seek', 'next', 'count', 'to_start', 'to_end', '__position', 'prev';
no Moose::Role;
-1;
__END__
# ABSTRACT: L<Salvation::MacroProcessor::Iterator>-compatible iterator interface
=pod
=head1 NAME
Salvation::MacroProcessor::Iterator::Compliance - L<Salvation::MacroProcessor::Iterator>-compatible iterator interface
=head1 REQUIRES
L<Moose>
=head1 METHODS
Following methods should be implemented by a class in order to be compatible with L<Salvation::MacroProcessor::Iterator>.
=head2 first
$object -> first()
Returns first element of a list.
=head2 last
$object -> last()
Returns last element of a list.
=head2 seek
$object -> seek( $position )
Sets position of an iterator to C<$position>.
=head2 next
$object -> next()
Returns element at current position, then increases position by one.
=head2 count
$object -> count()
Returns elements count.
=head2 to_start
$object -> to_start()
Sets position of an iterator to start.
=head2 to_end
$object -> to_end()
Sets position of an iterator to end.
=head2 __position
$object -> __position()
Returns current position of an iterator.
=head2 prev
$object -> prev()
Returns element at current position, then decreases position by one.
=cut