CStack - a class module for implementing Last-In-First-Out (stack) structures
'--------------------------------------------------
'
' The CSTACK class
'
' Usage:
' Dim st As New CStack
'
' ' push two values on the stack
' st.Push 1234
' st.Push 4567
' ' display number of elements in the stack
' Debug.Print "Count = " & st.Count
' ' peek at the element on top of stack
' Debug.Print "Peek = " & st.Peek
' ' print the elements on the stack while popping them
' Do While st.Count
' Debug.Print "TOS item = " & st.Pop
' Loop
'
'---------------------------------------------------
' this is the collection that holds the values
Dim colValues As New Collection
' add a new value onto the stack
Sub Push(value As Variant)
colValues.Add value
End Sub
' Pop a value off the stack - raise error if stack is emtpy
Function Pop() As Variant
Pop = colValues.Item(colValues.Count)
colValues.Remove colValues.Count
End Function
' Return the value on top of the stack, without popping it
' raise error if stack is empty
Function Peek() As Variant
Peek = colValues.Item(colValues.Count)
End Function
' Return the number of values in the stack
Function Count() As Long
Count = colValues.Count
End Function