blob: 74992cf700d6bf2388ec4576b35f3f48ed9c374b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/** \file arraylist.h
* Describes the ArrayList class.
*@author Mike Buland
*/
#ifndef ARRAY_LIST_H
#define ARRAY_LIST_H
#include "list.h"
/** A simple list which uses an array. This is a great choice if you won't do
* a lot of adding and deleting and need a fast random access list. Otherwise
* use the LinkedList.
*@author Mike Buland
*/
class ArrayList : public List
{
public:
/** Creates an arraylist with some pre-defined specs spelled out.
*@param initSize the inital number of elements to allocate.
*@param growByFactor How much to increase the size of the array by
* each time we run out of room.
*/
ArrayList( int initSize=100, int growByFactor=10 );
/**
* Destroy the ArrayList
*/
~ArrayList();
void *getAt( int nIndex );
void append( void *pData );
void insertBefore( void *pData, int nPos = 0 );
int getSize( );
bool isEmpty( );
void deleteAt( int nIndex );
void empty();
void setSize( int nNewSize );
void setAt( int nIndex, void *pData );
private:
/**
* Checks to see if the system needs to be resized, if it does, this will
* automatically resize based on your parameters.
*/
void checkResize();
/**
* Resize the system to a specified size. If it is larger, then all data
* will be retained, if smaller the elements at the end will be cut off.
*@param newSize The number of elements to include after resizing.
*/
void resizeTo( int newSize );
/**
* Actual master array of pointers. This is done to follow the List specs.
* All data transactions are performed with pointers or compatable
* primitive data-types.
*/
void **apData;
/**
* The number of filled in elements in the array. This is the practical
* real size of the ArrayList for all userspace applications.
*/
int nSize;
/**
* The number of elements allocated in memory. Not all of these have to be
* filled in, and it is usually larger than nSize so that adding and
* deleting elements is fast and easy.
*/
int nCapacity;
/**
* The amount to grow by whenever the array needs resizing.
*/
int nGrowByFactor;
};
#endif
|