-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathDataQueueMgr.h
73 lines (60 loc) · 2.11 KB
/
DataQueueMgr.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/* $Id: DataQueueMgr.h,v 1.24 2002-05-18 08:41:12 pgr Exp $ */
#ifndef COM_JAXO_YAXX_DATAQUEUEMGR_H_INCLUDED
#define COM_JAXO_YAXX_DATAQUEUEMGR_H_INCLUDED
/*---------+
| Includes |
+---------*/
#include "RexxString.h"
#include "../toolslib/LinkedList.h"
#ifdef YAXX_NAMESPACE
namespace YAXX_NAMESPACE {
#endif
/*------------------------------------------------------- class DataQueueMgr -+
| |
+----------------------------------------------------------------------------*/
class DataQueueMgr : private LinkedList {
public:
enum QueueMode { NONE, FIFO, LIFO };
DataQueueMgr();
~DataQueueMgr();
void addDataQueue(); // make a new current queue
void readDataQueue(streambuf & sbTarget, QueueMode mode);
void writeDataQueue(streambuf & sbSource, QueueMode qmode);
void enqueue(RexxString &); // FIFO to current queue
void push(RexxString &); // LIFO to current queue
RexxString pull(); // pull from whatever queue
int currentQueueSize() const; // size of current queue
int totalSize() const; // size in all queues
int countDataQueues() const; // number of data queues
int removeDataQueues(int n = 0);
static RexxString stripQueueModes(
RexxString const & cmd,
QueueMode & qmodeIn,
QueueMode & qmodeOut
);
private:
class DataQueue; // these 4 lines needed by MS C++
class DataQueueItem;
friend class DataQueue;
friend class DataQueueItem;
class DataQueue : public LinkedList::Item {
public:
LinkedList m_lst;
};
class DataQueueItem : public LinkedList::Item {
public:
DataQueueItem(RexxString & str) : m_str(str) {}
RexxString m_str;
};
};
inline int DataQueueMgr::countDataQueues() const {
return LinkedList::size();
}
inline int DataQueueMgr::currentQueueSize() const {
return ((DataQueue const *)((LinkedList *)this)->getLast())->m_lst.size();
}
#ifdef YAXX_NAMESPACE
}
#endif
#endif
/*===========================================================================*/