Changeset 221 for code/branches/objecthierarchie/src/ObjectList.cc
- Timestamp:
- Nov 20, 2007, 2:57:59 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchie/src/ObjectList.cc
r197 r221 9 9 { 10 10 this->first_ = 0; 11 this->last_ = 0; 11 12 } 12 13 … … 24 25 void ObjectList::add(OrxonoxClass* object) 25 26 { 26 ObjectListElement* temp = this->first_; 27 this->first_ = new ObjectListElement(object); 28 this->first_->next_ = temp; 27 if (!this->last_) 28 { 29 this->last_ = new ObjectListElement(object); 30 this->first_ = this->last_; 31 } 32 else 33 { 34 ObjectListElement* temp = this->last_; 35 this->last_ = new ObjectListElement(object); 36 this->last_->prev_ = temp; 37 temp->next_ = this->last_; 38 } 29 39 } 30 40 31 void ObjectList::remove(OrxonoxClass* object )41 void ObjectList::remove(OrxonoxClass* object, bool bIterateForwards) 32 42 { 33 if (!object )43 if (!object || !this->first_ || !this->last_) 34 44 return; 35 45 36 if (this->first_ ->object_ == object)46 if (this->first_ == this->last_) 37 47 { 38 ObjectListElement* temp = this->first_->next_; 39 delete this->first_; 40 this->first_ = temp; 48 if (this->first_->object_ == object) 49 { 50 delete this->first_; 51 this->first_ = 0; 52 this->last_ = 0; 53 } 41 54 42 55 return; 43 56 } 44 57 45 ObjectListElement* temp = this->first_; 46 while (temp->next_) 58 if (bIterateForwards) 47 59 { 48 if (t emp->next_->object_ == object)60 if (this->first_->object_ == object) 49 61 { 50 ObjectListElement* temp 2 = temp->next_->next_;51 delete t emp->next_;52 t emp->next_ = temp2;62 ObjectListElement* temp = this->first_->next_; 63 delete this->first_; 64 this->first_ = temp; 53 65 54 66 return; 55 67 } 56 68 57 temp = temp->next_; 69 ObjectListElement* temp = this->first_; 70 while (temp->next_) 71 { 72 if (temp->next_->object_ == object) 73 { 74 ObjectListElement* temp2 = temp->next_->next_; 75 delete temp->next_; 76 temp->next_ = temp2; 77 temp2->prev_ = temp; 78 79 return; 80 } 81 82 temp = temp->next_; 83 } 84 } 85 else 86 { 87 if (this->last_->object_ == object) 88 { 89 ObjectListElement* temp = this->last_->prev_; 90 delete this->last_; 91 this->last_ = temp; 92 93 return; 94 } 95 96 ObjectListElement* temp = this->last_; 97 while (temp->prev_) 98 { 99 if (temp->prev_->object_ == object) 100 { 101 ObjectListElement* temp2 = temp->prev_->prev_; 102 delete temp->prev_; 103 temp->prev_ = temp2; 104 temp2->next_ = temp; 105 106 return; 107 } 108 109 temp = temp->prev_; 110 } 58 111 } 59 112 } … … 67 120 this->object_ = object; 68 121 this->next_ = 0; 122 this->prev_ = 0; 69 123 } 70 124
Note: See TracChangeset
for help on using the changeset viewer.