1 ////////////////////////////////////////////////////////////////////////// 2 // 3 // pgAdmin III - PostgreSQL Tools 4 // 5 // Copyright (C) 2002 - 2016, The pgAdmin Development Team 6 // This software is released under the PostgreSQL Licence 7 // 8 // hdArrayCollection.h - Implementation of Collection Using Arrays 9 // 10 ////////////////////////////////////////////////////////////////////////// 11 12 #ifndef HDARRAYCOLLECTION_H 13 #define HDARRAYCOLLECTION_H 14 15 // App headers 16 #include "hotdraw/utilities/hdCollectionBase.h" 17 #include "hotdraw/main/hdObject.h" 18 19 20 WX_DEFINE_ARRAY_PTR(hdObject *, ddObjsArray); 21 22 class hdArrayIterator : public hdIteratorBase 23 { 24 public: 25 hdArrayIterator(ddObjsArray *ddPtrsArray); 26 hdObject *Next(); 27 hdObject *Current(); 28 bool HasNext(); 29 void ResetIterator(); 30 31 private: 32 int position; 33 ddObjsArray *internalArray; 34 }; 35 36 class hdArrayDownIterator : public hdIteratorBase 37 { 38 public: 39 hdArrayDownIterator(ddObjsArray *ddPtrsArray); 40 hdObject *Next(); 41 hdObject *Current(); 42 bool HasNext(); 43 void ResetIterator(); 44 45 private: 46 int position; 47 ddObjsArray *internalArray; 48 }; 49 50 //Create Array Objects used as base for hdCollections 51 class hdArrayCollection : public hdCollectionBase 52 { 53 public: 54 ~hdArrayCollection(); 55 void addItem(hdObject *item); 56 void removeItem(hdObject *item); 57 virtual void removeItemAt(int index); 58 hdIteratorBase *createIterator(); 59 hdIteratorBase *createDownIterator(); 60 hdObject *getItemAt(int index); 61 void bringToFront(hdObject *item); 62 void sendToBack(hdObject *item); 63 int count(); 64 bool existsObject(hdObject *item); 65 int getIndex(hdObject *item); 66 void insertAtIndex(hdObject *item, int index); 67 void replaceAtIndex(hdObject *item, int index); 68 void deleteAll(); 69 void removeAll(); 70 hdObject *&operator[](size_t index) 71 { 72 return ddArray[index]; 73 } 74 private: 75 ddObjsArray ddArray; 76 }; 77 #endif 78