XRootD
Loading...
Searching...
No Matches
XrdSutBuckList Class Reference

#include <XrdSutBuckList.hh>

+ Collaboration diagram for XrdSutBuckList:

Public Member Functions

 XrdSutBuckList (XrdSutBucket *b=0)
 
virtual ~XrdSutBuckList ()
 
XrdSutBucketBegin ()
 
XrdSutBucketEnd () const
 
XrdSutBucketNext ()
 
void PushBack (XrdSutBucket *b)
 
void PutInFront (XrdSutBucket *b)
 
void Remove (XrdSutBucket *b)
 
int Size () const
 

Detailed Description

Definition at line 61 of file XrdSutBuckList.hh.

Constructor & Destructor Documentation

◆ XrdSutBuckList()

XrdSutBuckList::XrdSutBuckList ( XrdSutBucket * b = 0)

Definition at line 40 of file XrdSutBuckList.cc.

41{
42 // Constructor
43
44 previous = current = begin = end = 0;
45 size = 0;
46
47 if (b) {
48 XrdSutBuckListNode *f = new XrdSutBuckListNode(b,0);
49 current = begin = end = f;
50 size++;
51 }
52}

◆ ~XrdSutBuckList()

XrdSutBuckList::~XrdSutBuckList ( )
virtual

Definition at line 55 of file XrdSutBuckList.cc.

56{
57 // Destructor
58
59 XrdSutBuckListNode *n = 0;
60 XrdSutBuckListNode *b = begin;
61 while (b) {
62 n = b->Next();
63 delete (b);
64 b = n;
65 }
66}
XrdSutBuckListNode * Next() const

References XrdSutBuckListNode::Next().

+ Here is the call graph for this function:

Member Function Documentation

◆ Begin()

XrdSutBucket * XrdSutBuckList::Begin ( )

Definition at line 154 of file XrdSutBuckList.cc.

155{
156 // Iterator functionality: init
157
158 previous = 0;
159 current = begin;
160 if (current)
161 return current->Buck();
162 return (XrdSutBucket *)0;
163}

◆ End()

XrdSutBucket * XrdSutBuckList::End ( ) const
inline

Definition at line 78 of file XrdSutBuckList.hh.

78{ return end->Buck(); }

◆ Next()

XrdSutBucket * XrdSutBuckList::Next ( )

Definition at line 166 of file XrdSutBuckList.cc.

167{
168 // Iterator functionality: get next
169
170 previous = current;
171 if (current) {
172 current = current->Next();
173 if (current)
174 return current->Buck();
175 }
176 return (XrdSutBucket *)0;
177}

◆ PushBack()

void XrdSutBuckList::PushBack ( XrdSutBucket * b)

Definition at line 97 of file XrdSutBuckList.cc.

98{
99 // Add at the end of the list
100 // Check to avoid duplicates
101
102 if (!Find(b)) {
103 XrdSutBuckListNode *nb = new XrdSutBuckListNode(b,0);
104 if (!begin)
105 begin = nb;
106 if (end)
107 end->SetNext(nb);
108 end = nb;
109 size++;
110 }
111}
void SetNext(XrdSutBuckListNode *n)

References XrdSutBuckListNode::SetNext().

+ Here is the call graph for this function:

◆ PutInFront()

void XrdSutBuckList::PutInFront ( XrdSutBucket * b)

Definition at line 82 of file XrdSutBuckList.cc.

83{
84 // Add at the beginning of the list
85 // Check to avoid duplicates
86
87 if (!Find(b)) {
88 XrdSutBuckListNode *nb = new XrdSutBuckListNode(b,begin);
89 begin = nb;
90 if (!end)
91 end = nb;
92 size++;
93 }
94}

◆ Remove()

void XrdSutBuckList::Remove ( XrdSutBucket * b)

Definition at line 114 of file XrdSutBuckList.cc.

115{
116 // Remove node containing bucket b
117
118 XrdSutBuckListNode *curr = current;
119 XrdSutBuckListNode *prev = previous;
120
121 if (!curr || curr->Buck() != b || (prev && curr != prev->Next())) {
122 // We need first to find the address
123 curr = begin;
124 prev = 0;
125 for (; curr; curr = curr->Next()) {
126 if (curr->Buck() == b)
127 break;
128 prev = curr;
129 }
130 }
131
132 // The bucket is not in the list
133 if (!curr)
134 return;
135
136 // Now we have all the information to remove
137 if (prev) {
138 current = curr->Next();
139 prev->SetNext(current);
140 previous = curr;
141 } else if (curr == begin) {
142 // First buffer
143 current = curr->Next();
144 begin = current;
145 previous = 0;
146 }
147
148 // Cleanup and update size
149 delete curr;
150 size--;
151}
XrdSutBucket * Buck() const

References XrdSutBuckListNode::Buck(), XrdSutBuckListNode::Next(), and XrdSutBuckListNode::SetNext().

+ Here is the call graph for this function:

◆ Size()

int XrdSutBuckList::Size ( ) const
inline

Definition at line 77 of file XrdSutBuckList.hh.

77{ return size; }

The documentation for this class was generated from the following files: