OSDN Git Service

#xxxxx DTXViewerのプロジェクトを追加。
[dtxmania/dtxmania.git] / DTXViewerプロジェクト / @FDK10プロジェクト / fifo.cpp
1 #include "stdafx.h"
2 #include "fifo.h"
3
4 namespace FDK {
5         namespace General {
6
7 void FIFO::Clear()
8 {
9         Cell* cell = m_pFirst;
10         while( cell != NULL )
11         {
12                 Cell *next = cell->next;
13                 delete cell;
14                 cell = next;
15         }
16         m_pFirst = m_pLast = NULL;
17 }
18
19 void FIFO::Push( void* obj )
20 {
21         Cell* cell = new Cell();
22         cell->obj = obj;
23         cell->prev = cell->next = NULL;
24         APPENDLIST( m_pFirst, m_pLast, cell );
25 }
26
27 void* FIFO::Pop()
28 {
29         if( m_pFirst == NULL )
30                 return NULL;
31
32         void* obj  = m_pFirst->obj;
33         Cell* next = m_pFirst->next;
34
35         delete m_pFirst;
36
37         if( next != NULL )
38         {
39                 next->prev = NULL;
40                 m_pFirst = next;
41         }
42         else
43                 m_pFirst = m_pLast = NULL;
44
45         return obj;
46 }
47
48         }//General
49 }//FDK