CQueue - a class module to implement First-In-First-Out (queue) structures
'--------------------------------------------------
'
' The CQUEUE class
' Dim qu As New CQueue
'
' ' enqueue to items to the queue
' qu.Enqueue 1234
' qu.Enqueue 5678
' ' display number of elements in the queue
' Debug.Print "Count = " & qu.Count
' ' peek at the element about to be read
' Debug.Print "Peek = " & qu.Peek
' ' print the elements in the queue while removing them
' Do While qu.Count
' Debug.Print "next item = " & qu.Dequeue
' Loop
'--------------------------------------------------
' this is the collection that holds the values
Dim colValues As New Collection
' add a new value to the queue
Sub Enqueue(value As Variant)
colValues.Add value
End Sub
' read the next value from the queue and remove it
' raises and error if the queue is empty
Function Dequeue() As Variant
Dequeue = colValues.Item(1)
colValues.Remove 1
End Function
' Return the next value from the queue, without removing it
' raise error if queue is empty
Function Peek() As Variant
Peek = colValues.Item(1)
End Function
' Return the number of values in the queue
Function Count() As Long
Count = colValues.Count
End Function
' clear the queue
Sub Clear()
Set colValues = New Collection
End Sub