#include <Set.h>
Public Member Functions | |
| Set () | |
| ~Set () | |
| void | insert (InfoRecord *) |
| int | find (InfoRecord *) |
| int | remove (InfoRecord *) |
| void | myRemove (listNode **n, InfoRecord *r) |
| InfoRecord * | iterator (Iterator *) |
| InfoRecord * | next (Iterator *) |
| int | numElements () |
| void | print () |
|
|
Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved. Definition at line 11 of file Set.C. 00012 {
00013 head = (listNode *) 0;
00014 }
|
|
|
Definition at line 16 of file Set.C. References listNode::next. 00016 {
00017 // delete all links; don't delete the InfoRecord objects
00018 listNode *tmp;
00019 for (listNode *link = head; link; link = tmp) {
00020 tmp = link->next;
00021 delete link;
00022 }
00023 }
|
|
|
Definition at line 73 of file Set.C. References listNode::info, and listNode::next. Referenced by Rebalancer::assign(), insert(), Rebalancer::isAvailableOn(), Rebalancer::numAvailable(), and Rebalancer::Rebalancer(). 00074 {
00075 listNode *p = head;
00076 while (p) {
00077 if (p->info == r) return 1;
00078 else p = p->next;
00079 }
00080 return 0;
00081 }
|
|
|
Definition at line 25 of file Set.C. References find(), and listNode::next. Referenced by Rebalancer::assign(), RefineTorusLB::newRefine(), Rebalancer::Rebalancer(), and Rebalancer::refine(). 00026 {
00027 if (!find(info))
00028 {
00029 listNode *node = new listNode(info);
00030 node->next = head;
00031 head = node;
00032 }
00033
00034 }
|
|
|
Definition at line 83 of file Set.C. References listNode::info, listNode::next, and Iterator::next. Referenced by Rebalancer::createSpanningTree(), Rebalancer::InitProxyUsage(), RefineTorusLB::newRefine(), Rebalancer::printLoads(), and Rebalancer::refine(). 00084 {
00085 if (head){
00086 iter->next = head->next;
00087 return head->info;
00088 }
00089 return 0;
00090 }
|
|
||||||||||||
|
Definition at line 37 of file Set.C. References listNode::next. 00038 {
00039 if ((*n)->info == r)
00040 *n = (*n)->next;
00041 else
00042 myRemove(&((*n)->next), r);
00043 }
|
|
|
Definition at line 92 of file Set.C. References listNode::info, listNode::next, and Iterator::next. Referenced by Rebalancer::createSpanningTree(), Rebalancer::InitProxyUsage(), RefineTorusLB::newRefine(), Rebalancer::printLoads(), and Rebalancer::refine(). 00093 {
00094 // std::cout << "set::next: " << iter->next << "\n";
00095 if (!iter->next)
00096 { return 0;
00097 }
00098 // std::cout << "set::next: iter->next->info=" << iter->next->info << "\n";
00099 InfoRecord *temp = iter->next->info;
00100 iter->next = iter->next->next;
00101 return temp;
00102 }
|
|
|
Definition at line 105 of file Set.C. References listNode::next. Referenced by Rebalancer::InitProxyUsage(), Rebalancer::multirefine(), RefineTorusLB::newRefine(), Rebalancer::numAvailable(), Rebalancer::printLoads(), Rebalancer::printSummary(), and Rebalancer::refine(). 00106 {
00107 int n;
00108 n = 0;
00109 listNode *p = head;
00110 while (p){
00111 n++;
00112 p = p->next;
00113 }
00114 return n;
00115 }
|
|
|
Definition at line 117 of file Set.C. References InfoRecord::Id, listNode::info, iout, and listNode::next. 00118 {
00119 listNode *p = head;
00120 while (p){
00121 if ( p->info ) iout << p->info->Id << " ";
00122 else iout << "NULL ";
00123 p = p->next;
00124 }
00125 }
|
|
|
Definition at line 45 of file Set.C. References listNode::info, and listNode::next. Referenced by Rebalancer::deAssign(), RefineTorusLB::newRefine(), and Rebalancer::refine(). 00046 {
00047 if (!head)
00048 return 0;
00049
00050 listNode *p = head;
00051 listNode *q = p->next;
00052
00053 if (p->info == r){
00054 head = q;
00055 delete p;
00056 return 1;
00057 }
00058
00059 while (q){
00060 if (q->info == r){
00061 p->next = q->next;
00062 delete q;
00063 return 1;
00064 }
00065 else {
00066 p = q;
00067 q = q->next;
00068 }
00069 }
00070 return 0;
00071 }
|
1.3.9.1