Warning, file /include/xrootd/XrdOuc/XrdOucChain.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 #ifndef __OUC_CHAIN__
0002 #define __OUC_CHAIN__
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033 template<class T>
0034 class XrdOucQSItem
0035 {
0036 public:
0037 XrdOucQSItem<T> *nextelem;
0038 T *dataitem;
0039 XrdOucQSItem(T *item) {dataitem = item; nextelem = 0;}
0040 ~XrdOucQSItem() {}
0041 };
0042
0043 template<class T>
0044 class XrdOucStack
0045 {
0046 public:
0047
0048 int isEmpty() {return anchor == 0;}
0049
0050 T *Pop() {XrdOucQSItem<T> *cp;
0051 if (!(cp = anchor)) return (T *)0;
0052 anchor = anchor->nextelem;
0053 cp->nextelem = 0;
0054 return cp->dataitem;
0055 }
0056
0057 void Push(XrdOucQSItem<T> *item) {item->nextelem = anchor; anchor = item;}
0058
0059 XrdOucStack() {anchor = 0;}
0060 ~XrdOucStack() {}
0061
0062 private:
0063 XrdOucQSItem<T> *anchor;
0064 };
0065
0066 template<class T>
0067 class XrdOucQueue
0068 {
0069 public:
0070
0071 void Add(XrdOucQSItem<T> *item)
0072 {item->nextelem = 0;
0073 if (lastelem) {lastelem->nextelem = item;
0074 lastelem = item;
0075 }
0076 else anchor = lastelem = item;
0077 }
0078
0079 int isEmpty() {return anchor == 0;}
0080
0081 T *Remove() {XrdOucQSItem<T> *qp;
0082 if (!(qp = anchor)) return (T *)0;
0083 if (!(anchor = anchor->nextelem)) lastelem = 0;
0084 return qp->dataitem;
0085 }
0086
0087 XrdOucQueue() {anchor = lastelem = 0;}
0088 ~XrdOucQueue() {}
0089
0090 private:
0091 XrdOucQSItem<T> *anchor;
0092 XrdOucQSItem<T> *lastelem;
0093 };
0094 #endif