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

1.2       albertel    1: #  Implement a simple queue in terms of a list.
                      2: #
1.4     ! albertel    3: # $Id: Queue.pm,v 1.3 2003/04/24 10:57:57 foxr Exp $
1.2       albertel    4: #
                      5: # Copyright Michigan State University Board of Trustees
                      6: #
                      7: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
                      8: #
                      9: # LON-CAPA is free software; you can redistribute it and/or modify
                     10: # it under the terms of the GNU General Public License as published by
                     11: # the Free Software Foundation; either version 2 of the License, or
                     12: # (at your option) any later version.
1.1       foxr       13: #
1.2       albertel   14: # LON-CAPA is distributed in the hope that it will be useful,
                     15: # but WITHOUT ANY WARRANTY; without even the implied warranty of
                     16: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     17: # GNU General Public License for more details.
                     18: #
                     19: # You should have received a copy of the GNU General Public License
                     20: # along with LON-CAPA; if not, write to the Free Software
                     21: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                     22: #
                     23: # /home/httpd/html/adm/gpl.txt
                     24: #
                     25: # http://www.lon-capa.org/
1.1       foxr       26: #
                     27: 
                     28: =pod
                     29: 
                     30: =head1 Queue
                     31: 
                     32: An object oriented implementation of a queue data structure.  queues
                     33: are first in last out data structures.
                     34: 
                     35: =head1 Member functions:
                     36: 
                     37: =cut
                     38: 
                     39: package Queue;
                     40: 
                     41: 
                     42: =pod
                     43: 
                     44: =head2 new 
                     45: 
                     46:   Construct a new queue.
                     47: 
                     48: =cut
                     49: 
                     50: sub new {
                     51:     my $class = shift;		# Class name to bless into.
                     52:     my $self  = [];		# Our data is a reference to an anon. array.
                     53: 
                     54:     bless($self, $class);	# Type this as an object.
                     55: 
                     56:     return $self;
                     57: }
                     58: 
                     59: =pod
                     60: 
                     61: =head2 enqueue
                     62: 
                     63:    Add an element to the tail of the queue.
                     64: 
                     65: =cut
                     66: 
                     67: sub enqueue {
                     68:     my $self = shift;		# Get object reference.
                     69:     my $item = shift;		# Get the item to enqueue...
                     70:     push(@$self, $item);		# Push the item to the back of the array.
                     71: 
                     72: 
                     73: }
                     74: 
                     75: =pod
                     76: 
                     77: =head2 dequeue
                     78: 
                     79:    Remove an element from the front of the queue.
                     80: 
                     81: =cut
                     82: 
                     83: sub dequeue {
                     84:     my $self = shift;		# Get object reference....
                     85:     return shift @$self;		# Remove from the front of the queue.
                     86: }
                     87: 
1.3       foxr       88: 
                     89: =pod  
1.4     ! albertel   90: 
1.3       foxr       91: =head1 Count
                     92: 
                     93: Returns number of items in a queue.
                     94: 
                     95: =cut
                     96: 
                     97: sub Count {
                     98:     my $self = shift;
                     99:     my $count = scalar(@$self);
                    100:     return $count;
                    101: }
1.1       foxr      102: 
                    103: 1;
                    104: 
                    105: =pod
                    106: 
                    107: =head1 Theory
                    108: 
                    109: The queue is implemented as an array... enqueue is a thinly disguised
                    110: push, and dequeue is a thinly disguised shift.  This is probably quite
                    111: in efficient for large queues, but should be fine for reasonably sized
                    112: queues.
                    113: 
                    114: Note that since Perl is a dynamically typed language, queues can
                    115: contain objects of any data type and can even be heterogenously typed.
                    116: 
                    117: =cut

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