00001 #ifndef GLSTORAGESET_H_
00002 #define GLSTORAGESET_H_
00003 #include "GLBaseOrganism.h"
00004 #include "GLBaseOrganismStorage.h"
00005 #include "GLIteratorStorageStl.h"
00006
00012 class GLStorageSet : public GLBaseOrganismStorage
00013 {
00014 public:
00018 GLStorageSet();
00023 virtual ~GLStorageSet();
00033 virtual bool addOrganism(GLBaseOrganism* organism,
00034 GLConstants::TTwinsFlags twins =
00035 GLConstants::NO_TWINS);
00036
00040 void emptyStorage();
00041
00050 virtual const GLBaseOrganism* findOrganism(
00051 const GLBaseOrganism* organism,
00052 bool soft = true) const;
00053
00058 virtual GLBaseOrganismStorage::iterator* getIterator();
00059
00066 virtual GLBaseOrganismStorage::const_iterator* getIteratorConst() const;
00067
00085 virtual int
00086 getOrganismsVector(vector<GLBaseOrganism*>& container,
00087 GLConstants::TStorageFilling fill =
00088 GLConstants::APPEND,
00089 int size = -1,
00090 bool copy_clones = false);
00091
00107 virtual int
00108 getOrganismsVector(vector<const GLBaseOrganism*>& container,
00109 GLConstants::TStorageFilling fill =
00110 GLConstants::APPEND,
00111 int size = -1,
00112 bool copy_clones = false) const;
00113
00118 virtual int getSize() const
00119 { return m_storage.size(); }
00120
00127 virtual void merge(const GLBaseOrganismStorage* storage,
00128 GLConstants::TTwinsFlags twins =
00129 GLConstants::NO_TWINS);
00130
00137 virtual int trimSize(unsigned int new_size);
00138
00139 private:
00140
00141 TGLSetOfOrganisms m_storage;
00142
00143
00144 typedef GLIteratorStorageStl<TGLSetOfOrganisms,
00145 TGLSetOfOrganisms::iterator,
00146 GLBaseOrganism*>
00147 iterator;
00148 typedef GLIteratorStorageStl<const TGLSetOfOrganisms,
00149 TGLSetOfOrganisms::const_iterator,
00150 const GLBaseOrganism* const>
00151 const_iterator;
00152 };
00153
00154 #endif