00001 /* 00002 SagaEngine library 00003 Copyright (c) 2002-2006 Skalden Studio AS 00004 00005 This software is provided 'as-is', without any express or implied 00006 warranty. In no event will the authors be held liable for any 00007 damages arising from the use of this software. 00008 00009 Permission is granted to distribute the library under the terms of the 00010 Q Public License version 1.0. Be sure to read and understand the license 00011 before using the library. It should be included here, or you may read it 00012 at http://www.trolltech.com/products/qt/licenses/licensing/qpl 00013 00014 The original version of this library can be located at: 00015 http://www.sagaengine.com/ 00016 00017 Rune Myrland 00018 rune@skalden.com 00019 */ 00020 00021 00022 #ifndef ObjectList_hpp 00023 #define ObjectList_hpp 00024 00025 #include "comp/comp.hpp" 00026 #include "comp/schema/CompSchema.hpp" 00027 00028 namespace se_core { 00029 00030 class _SeCoreExport ObjectList { 00031 friend class ObjectListIterator; 00032 00033 public: 00034 typedef CompSchema::VoidList::iterator_type iterator_type; 00035 class _SeCoreExport Iterator { 00036 public: 00037 Iterator(); 00038 Iterator(const ObjectList& mgo); 00039 void init(const ObjectList& mgo); 00040 void init(short firstNode); 00041 00042 inline bool hasNext() { 00043 return it_ != CompSchema::VoidList::end(); 00044 } 00045 00046 inline const Object& next() { 00047 return *static_cast<Object*>(CompSchema::voidList.next(it_)); 00048 } 00049 00050 private: 00051 CompSchema::VoidList::iterator_type it_; 00052 }; 00053 00054 00055 ObjectList(); 00056 virtual ~ObjectList(); 00057 virtual void add(const Object& value); 00058 void add(ObjectList& msc); 00059 virtual void remove(const Object& value); 00060 void initIterator(CompSchema::VoidList::iterator_type& iterator) const; 00061 inline CompSchema::VoidList::iterator_type iterator() const { return firstNode_; } 00062 bool contains(const Object& value) const; 00063 bool contains(ObjectList& msc) const; 00064 bool sharesAny(ObjectList& msc) const; 00065 bool isEmpty() const; 00066 void destroyMembersAndClear(); 00067 void clear(); 00068 int size() const; 00069 00070 protected: 00071 CompSchema::VoidList::iterator_type firstNode_; 00072 }; 00073 } 00074 00075 #endif
Home Page | SagaEngine trunk (updated nightly) reference generated Sun Dec 2 20:06:10 2007 by Doxygen version 1.3.9.1.