home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / Stream_MP32029381162006.psc / DataQueue.cls < prev    next >
Text File  |  2006-11-06  |  2KB  |  76 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "DataQueue"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15.  
  16. ' a simple fifo
  17.  
  18. Private m_clsItems()            As DataQueueItem
  19. Private m_lngItemCount          As Long
  20.  
  21. Public Sub Clear()
  22.     Dim i   As Long
  23.     
  24.     If Count > 0 Then
  25.         For i = 0 To m_lngItemCount
  26.             Set m_clsItems(i) = Nothing
  27.         Next
  28.     End If
  29.     
  30.     m_lngItemCount = 0
  31. End Sub
  32.  
  33. Public Property Get Count() As Long
  34.     Count = m_lngItemCount
  35. End Property
  36.  
  37. Public Function Dequeue() As DataQueueItem
  38.     Dim i   As Long
  39.  
  40.     If m_lngItemCount > 0 Then
  41.         Set Dequeue = m_clsItems(0)
  42.     
  43.         For i = 0 To m_lngItemCount - 2
  44.             Set m_clsItems(i) = m_clsItems(i + 1)
  45.         Next
  46.     
  47.         Set m_clsItems(m_lngItemCount - 1) = Nothing
  48.     
  49.         m_lngItemCount = m_lngItemCount - 1
  50.     Else
  51.         Dequeue = Nothing
  52.     End If
  53. End Function
  54.  
  55. Public Sub Enqueue(item As DataQueueItem)
  56.     m_lngItemCount = m_lngItemCount + 1
  57.     
  58.     If UBound(m_clsItems) + 1 < m_lngItemCount Then
  59.         ReDim Preserve m_clsItems(UBound(m_clsItems) + 100)
  60.     End If
  61.     
  62.     Set m_clsItems(m_lngItemCount - 1) = item
  63. End Sub
  64.  
  65. Private Sub Class_Initialize()
  66.     ReDim m_clsItems(100) As DataQueueItem
  67. End Sub
  68.  
  69. Private Sub Class_Terminate()
  70.     Dim i   As Long
  71.     
  72.     For i = 0 To m_lngItemCount - 1
  73.         Set m_clsItems(i) = Nothing
  74.     Next
  75. End Sub
  76.