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