Annotation of loncom/types/Stack.pm, revision 1.1

1.1     ! foxr        1: #
        !             2: #   Implement a simple stack in terms of a list.
        !             3: # 
        !             4: 
        !             5: =pod
        !             6: 
        !             7: =head1 Stack 
        !             8: 
        !             9: An object oriented implementation of a Stack data structure.
        !            10: Stacks are first in last out data structures.
        !            11: 
        !            12: =head1 Member functions:
        !            13: 
        !            14: =cut
        !            15: 
        !            16: package Stack;
        !            17: 
        !            18: =pod
        !            19: 
        !            20: =head2 new  
        !            21: 
        !            22:     Creates a new instance of a stack. 
        !            23:   
        !            24:     my $stack = Stack->new();
        !            25: 
        !            26: =cut
        !            27: 
        !            28: sub new {
        !            29:     my $class = shift;		# Class name.
        !            30:     my $self  = [];		# Create an empty list to represent the stack.
        !            31:     bless($self, $class);	# Turn this into an object and..
        !            32:     return $self;		# Return it.
        !            33: }
        !            34: 
        !            35: =pod
        !            36: 
        !            37: =head2 push
        !            38: 
        !            39:     takes an item and pushes it onto the back end of the stack.
        !            40: 
        !            41:     my $stack = Stack->new();
        !            42:     $stack->push(something);
        !            43: 
        !            44: =cut
        !            45: 
        !            46: sub push {
        !            47:     my $self = shift;		# Gets the list...
        !            48:     my $item = shift;		# The item to push.
        !            49:     push(@$self,$item);
        !            50: }
        !            51: 
        !            52: =pod
        !            53: 
        !            54: =head2 pop
        !            55: 
        !            56:     Returns the item at the top of the stack: does a pop.
        !            57: 
        !            58:     my object = Stack->new();
        !            59:     my $item = object->pop();
        !            60: 
        !            61: =cut
        !            62: 
        !            63: sub pop {
        !            64:     my $self = shift;
        !            65:     return pop(@$self);
        !            66: }
        !            67: 
        !            68: 
        !            69: 1;
        !            70: 
        !            71: =pod
        !            72: 
        !            73: =head1 Internal implementation details
        !            74: 
        !            75: Stacks are implemented as lists.  Thus a stack is a thinly disguised
        !            76: list with push and pop wrappers.  Since PERL is a dynamically typed
        !            77: language, stacks can contain any data type ... including a
        !            78: heterogenous collection of types.
        !            79: 
        !            80: =cut
        !            81: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>