Changeset 9672 in orxonox.OLD for trunk/src/lib/lang/new_object_list.h
- Timestamp:
- Aug 21, 2006, 5:58:01 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/lang/new_object_list.h
r9671 r9672 25 25 public: 26 26 class IteratorBase { }; 27 struct ClassEntry{ 28 inline ClassEntry (NewObjectListBase* objectList, NewObjectListBase::IteratorBase* iterator) : _objectList(objectList), _iterator(iterator) {} 29 NewObjectListBase* _objectList; 30 NewObjectListBase::IteratorBase* _iterator; 31 }; 27 32 28 33 public: … … 45 50 static const std::list<std::string>& getClassNames(); 46 51 47 virtual void unregisterObject( std::list<NewObjectListBase::IteratorBase*>_iterators) = 0;52 virtual void unregisterObject(IteratorBase* _iterators) = 0; 48 53 49 54 protected: … … 91 96 { 92 97 public: 93 Iterator(iterator it) { it = it; } 94 typename NewObjectList::iterator it; 98 Iterator(iterator it) { _it = it; } 99 inline iterator& it() { return _it; } 100 typename NewObjectList::iterator _it; 95 101 }; 96 102 … … 102 108 inline const list& objects() const { return _objects; }; 103 109 104 NewObjectListBase::IteratorBase* registerObject(T* object, NewObjectListBase* objectList); 105 void unregisterObject(const IteratorBase& iterator); 106 virtual void unregisterObject(std::list<NewObjectListBase::IteratorBase*> _iterators) = 0; 110 NewObjectListBase::IteratorBase* registerObject(T* object); 111 void unregisterObject(IteratorBase* iterator); 107 112 108 113 virtual void debug() const; … … 145 150 146 151 template <class T> 147 NewObjectListBase::IteratorBase* NewObjectList<T>::registerObject(T* object , NewObjectListBase* objectList)152 NewObjectListBase::IteratorBase* NewObjectList<T>::registerObject(T* object) 148 153 { 149 if(this->_typeOfList.empty())150 {151 this->_typeOfList.push_back(objectList);152 }153 154 154 this->_objects.push_front(object); 155 155 return new Iterator(this->_objects.begin()); … … 157 157 158 158 template <class T> 159 void NewObjectList<T>::unregisterObject( const IteratorBase&iterator)159 void NewObjectList<T>::unregisterObject(IteratorBase* iterator) 160 160 { 161 this->_objects.erase(static_cast<Iterator >(iterator));161 this->_objects.erase(static_cast<Iterator*>(iterator)->it()); 162 162 //_objects.erase(std::find(_objects.begin(), _objects.end(), object)); 163 163 }
Note: See TracChangeset
for help on using the changeset viewer.