package HTML::Widgets::NavMenu::Tree::Iterator::Stack; use strict; use warnings; use base qw(HTML::Widgets::NavMenu::Object); sub _init { my $self = shift; $self->{'items'} = []; return 0; } =head1 NAME HTML::Widgets::NavMenu::Tree::Iterator::Stack - a simple stack class. =head1 SYNOPSIS For internal use only. =head1 METHODS =cut sub push { my $self = shift; my $item = shift; push @{$self->{'items'}}, $item; return 0; } =head2 $s->push($myitem) Pushes an item. =cut sub len { my $self = shift; return scalar(@{$self->{'items'}}); } =head2 $s->len($myitem) Returns the number of elements. =cut sub top { my $self = shift; return $self->{'items'}->[-1]; } =head2 $s->top() Returns the highest item. =cut sub item { my $self = shift; my $index = shift; return $self->{'items'}->[$index]; } =head2 my $item = $s->item($index) Returns the item of index C<$index>. =cut sub pop { my $self = shift; return pop(@{$self->{'items'}}); } =head2 my $item = $s->pop() Pops the item and returns it. =cut sub is_empty { my $self = shift; return ($self->len() == 0); } =head2 my $bool = $s->is_empty() Returns true if the stack is empty. =cut sub reset { my $self = shift; @{$self->{'items'}} = (); return 0; } =head2 $s->reset(); Empties the stack =head1 COPYRIGHT & LICENSE Copyright 2006 Shlomi Fish, all rights reserved. This program is released under the following license: MIT X11. =cut 1;