Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 24, 2006, 11:26:48 PM (18 years ago)
Author:
bensch
Message:

some more DEBUG-functionality to the ObjectList… something is not quite right… i wonder, what this might be…

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/new_class_id/src/lib/lang/object_list.h

    r9757 r9807  
    104104  //! Only used to unsubscribe a BaseObject. (just try to make a valid iterator, stupid :))
    105105  virtual void                          unregisterObject(IteratorBase* _iterators) = 0;
     106  //! Only for debug purposes
     107  virtual bool                          checkIteratorInList(IteratorBase* _iterator) const = 0;
     108  virtual bool                          checkObjectInList(BaseObject* obj) const = 0;
    106109
    107110protected:
     
    226229  ObjectListBase::IteratorBase*      registerObject(T* object);
    227230  virtual void                       unregisterObject(IteratorBase* iterator);
    228 
     231  bool                               checkIteratorInList(IteratorBase* iterator) const;
     232  bool                               checkObjectInList(BaseObject* obj) const;
    229233protected:
    230234  virtual void                       getBaseObjectList(ObjectListBase::base_list* list) const;
     
    345349}
    346350
     351template <class T>
     352bool ObjectList<T>::checkIteratorInList(IteratorBase* iterator) const
     353{
     354  const_iterator it;
     355  for (it = this->_objects.begin(); it != this->_objects.end(); ++it)
     356    if (static_cast<Iterator*>(iterator)->it() == it)
     357      return true;
     358  printf("ObjectList:: checkIteratorInList:: ITERATOR NOT IN THE LIST '%s' (UN-SYNC SHOULD NOT HAPPEN!!)\n", this->name().c_str());
     359  return false;
     360}
     361
     362template <class T>
     363bool ObjectList<T>::checkObjectInList(BaseObject* obj) const
     364{
     365  T* object = dynamic_cast<T*>(obj);
     366  if (object != NULL)
     367  {
     368    printf("EXTREME BUG: Object does not exist anymore!! (or a bug in ObjectList)\n");
     369    return false;;
     370  }
     371
     372  const_iterator it;
     373  for (it = this->_objects.begin(); it != this->_objects.end(); ++it)
     374  {
     375    if (*it == object)
     376      return true;
     377  }
     378  printf("ObjectList:: checkObjectInList:: OBJECT NOT IN THE LIST '%s' (UN-SYNC SHOULD NOT HAPPEN!!)\n", this->name().c_str());
     379  return false;
     380}
     381
     382
    347383#endif /* _OBJECT_LIST_H */
Note: See TracChangeset for help on using the changeset viewer.