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

1.1     ! foxr        1: #
        !             2: #  Implement a simple queue in terms of a list.
        !             3: #
        !             4: 
        !             5: =pod
        !             6: 
        !             7: =head1 Queue
        !             8: 
        !             9: An object oriented implementation of a queue data structure.  queues
        !            10: are first in last out data structures.
        !            11: 
        !            12: =head1 Member functions:
        !            13: 
        !            14: =cut
        !            15: 
        !            16: package Queue;
        !            17: 
        !            18: 
        !            19: =pod
        !            20: 
        !            21: =head2 new 
        !            22: 
        !            23:   Construct a new queue.
        !            24: 
        !            25: =cut
        !            26: 
        !            27: sub new {
        !            28:     my $class = shift;		# Class name to bless into.
        !            29:     my $self  = [];		# Our data is a reference to an anon. array.
        !            30: 
        !            31:     bless($self, $class);	# Type this as an object.
        !            32: 
        !            33:     return $self;
        !            34: }
        !            35: 
        !            36: =pod
        !            37: 
        !            38: =head2 enqueue
        !            39: 
        !            40:    Add an element to the tail of the queue.
        !            41: 
        !            42: =cut
        !            43: 
        !            44: sub enqueue {
        !            45:     my $self = shift;		# Get object reference.
        !            46:     my $item = shift;		# Get the item to enqueue...
        !            47:     push(@$self, $item);		# Push the item to the back of the array.
        !            48: 
        !            49: 
        !            50: }
        !            51: 
        !            52: =pod
        !            53: 
        !            54: =head2 dequeue
        !            55: 
        !            56:    Remove an element from the front of the queue.
        !            57: 
        !            58: =cut
        !            59: 
        !            60: sub dequeue {
        !            61:     my $self = shift;		# Get object reference....
        !            62:     return shift @$self;		# Remove from the front of the queue.
        !            63: }
        !            64: 
        !            65: 
        !            66: 1;
        !            67: 
        !            68: =pod
        !            69: 
        !            70: =head1 Theory
        !            71: 
        !            72: The queue is implemented as an array... enqueue is a thinly disguised
        !            73: push, and dequeue is a thinly disguised shift.  This is probably quite
        !            74: in efficient for large queues, but should be fine for reasonably sized
        !            75: queues.
        !            76: 
        !            77: Note that since Perl is a dynamically typed language, queues can
        !            78: contain objects of any data type and can even be heterogenously typed.
        !            79: 
        !            80: =cut

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