Array::Stream::Transactional - Transactional array wrapper

SYNOPSIS

use Array::Stream::Transactional;
my $stream = Array::Stream::Transactional->new([1..100]);
$stream->commit;
while($stream->has_more) {
  if($stream->next == 50 && !$reverted) {
    $stream->rollback;
    $reverted = 1;
  }
  print $stream->current, "\n";
}

DESCRIPTION

Array::Stream::Transactional is a Perl extension for wrapping an array and having it pose as a stream. The streams current position can be commited and rollbacked at any time.

CONSTRUCTOR

new ( ARRAYREF )

Creates an Array::Stream::Transactional. Wrapps the passed array reference. Position is set to 0, current is set the first element in ARRAYREF, previous is set to undef and the transaction stack is empty.

METHODS

next ( )

Get the next element from the stream and increment the position in the current transaction.

current ( )

Get the current element read from the stream in the current transaction.

previous ( )

Get the previous element read from the stream in the current transaction.

pos ( )

Return the current position in the stream.

length ( )

Return the length of the wrapped array

has_more ( )

Return true if there are more elements in the stream, false otherwise.

commit ( )

Push the current position, element and previous element on the transaction stack.

rollback ( )

Rollback the current transaction by reseting the stream position, current and previous element. The transaction will be removed from the transaction stack so that next rollback will rollback to the commit previous to the commit that created the rollbacked transaction.

regret ( )

Removes the top item of the commit stack. Returns the position, current element and previous element of the stream at the time the commit was made.

reset ( )

Resets the reading of the stream to position 0, current to first element and previous to undefined.

AUTHOR

Claes Jacobsson, claesjac@cpan.org

COPYRIGHT AND LICENSE

Copyright 2004 by Claes Jacobsson

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 84:

=pod directives shouldn't be over one line long! Ignoring all 2 lines of content