Bug #1062: Fix linking errors by moving definition of userDrivenMode to machine-commo...
[charm.git] / src / ck-ldb / ckset.C
blob6820d8ab38770379dc46fda3d61bf4ae709526cf
1 /**
2  * \addtogroup CkLdb
3 */
4 /*@{*/
6 #include "elements.h"
8 Set::Set() 
10   head = (listNode *) 0;
13 Set::~Set()
15   listNode *p = head;
16   while (p){
17     listNode *cur = p;
18     p = p->next;
19     delete cur;
20   }
23 void Set::insert(InfoRecord *info) 
25   if (!find(info))
26   {
27     listNode *node = new listNode();
28     node->info = info;
29     node->next = head;
30     head = node;
31   }
32    
36 void Set::myRemove(listNode **n, InfoRecord *r)
38   if ((*n)->info == r)
39     *n = (*n)->next;
40   else 
41     myRemove(&((*n)->next), r);
44 void Set::remove(InfoRecord * r) 
46   listNode *p = head;
47   if (!head)
48     return;
50   listNode *q = head->next;
52   if (p->info == r){
53     head = head->next;
54     return;
55   }
56      
57   while (q){
58     if (q->info == r){
59       p->next = q->next;
60       delete q;
61       return;
62     }
63     else {
64       p = q;
65       q = q->next;
66     }
67   }
70 int Set::find(InfoRecord * r) 
72   listNode *p = head;
73   while (p) {
74     if (p->info == r) return 1;
75     else p = p->next;
76   }
77   return 0;
80 InfoRecord * Set::iterator(Iterator *iter)
82   if (head){
83     iter->next = head->next;
84     return head->info;
85   }
86   return 0;
89 InfoRecord * Set::next(Iterator *iter)
91   //  ckout << "set::next: " << iter->next << "\n";
92   if (!iter->next)
93     { return 0;
94     }
95   //  ckout << "set::next: iter->next->info=" << iter->next->info << "\n";
96   InfoRecord *temp = iter->next->info;
97   iter->next = iter->next->next;
98   return temp;
102 int Set::numElements()
104   int n;
105   n = 0;
106   listNode *p = head;
107   while (p){
108     n++;
109     p = p->next;
110   }
111   return n;
114 void Set::print() 
116   listNode *p = head;
117   while (p){
118     printf("%d ",p->info->Id);
119     p = p->next;
120   }
124 /*@}*/