diff options
author | Mike Buland <eichlan@xagasoft.com> | 2007-09-05 16:20:48 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2007-09-05 16:20:48 +0000 |
commit | c4176c4dc172e8b30536a4eb90ae6f6f80f75436 (patch) | |
tree | fc49547f3c48ecb400fd9c972ee745beef7e0216 /src | |
parent | a3cb276a2b048ce94b04e95b3ac87f323e075712 (diff) | |
download | libbu++-c4176c4dc172e8b30536a4eb90ae6f6f80f75436.tar.gz libbu++-c4176c4dc172e8b30536a4eb90ae6f6f80f75436.tar.bz2 libbu++-c4176c4dc172e8b30536a4eb90ae6f6f80f75436.tar.xz libbu++-c4176c4dc172e8b30536a4eb90ae6f6f80f75436.zip |
This commit has part of an Array class, I'm just not sure I really need it
right now. Unfortunately it doesn't compile right now, if you want to build
this version, just delete array.
On the other hand, Bu::List now has enqueue/dequeue functions.
Diffstat (limited to 'src')
-rw-r--r-- | src/array.cpp | 2 | ||||
-rw-r--r-- | src/array.h | 78 | ||||
-rw-r--r-- | src/list.h | 15 |
3 files changed, 95 insertions, 0 deletions
diff --git a/src/array.cpp b/src/array.cpp new file mode 100644 index 0000000..f80a99c --- /dev/null +++ b/src/array.cpp | |||
@@ -0,0 +1,2 @@ | |||
1 | #include "bu/array.h" | ||
2 | |||
diff --git a/src/array.h b/src/array.h new file mode 100644 index 0000000..cd0d7da --- /dev/null +++ b/src/array.h | |||
@@ -0,0 +1,78 @@ | |||
1 | #ifndef BU_ARRAY_H | ||
2 | #define BU_ARRAY_H | ||
3 | |||
4 | #include <memory> | ||
5 | #include "bu/exceptionbase.h" | ||
6 | |||
7 | namespace Bu | ||
8 | { | ||
9 | /** | ||
10 | * Array type container, just like a normal array only flexible and keeps | ||
11 | * track of your memory for you. | ||
12 | * | ||
13 | *@param value (typename) The type of data to store in your list | ||
14 | *@param valuealloc (typename) Memory Allocator for your value type | ||
15 | *@param linkalloc (typename) Memory Allocator for the list links. | ||
16 | */ | ||
17 | template<typename value, int inc=10, typename valuealloc=std::allocator<value> > | ||
18 | class Array | ||
19 | { | ||
20 | private: | ||
21 | typedef class Array<value, inc, valuealloc> MyType; | ||
22 | |||
23 | public: | ||
24 | Array() : | ||
25 | pData( NULL ), | ||
26 | iSize( 0 ), | ||
27 | iCapacity( 0 ) | ||
28 | { | ||
29 | } | ||
30 | |||
31 | Array( const MyType &src ) : | ||
32 | pData( NULL ), | ||
33 | iSize( 0 ), | ||
34 | iCapacity( 0 ) | ||
35 | { | ||
36 | // for( Link *pCur = src.pFirst; pCur; pCur = pCur->pNext ) | ||
37 | // { | ||
38 | // append( *pCur->pValue ); | ||
39 | // } | ||
40 | } | ||
41 | |||
42 | ~Array() | ||
43 | { | ||
44 | clear(); | ||
45 | } | ||
46 | |||
47 | /** | ||
48 | * Clear the data from the list. | ||
49 | */ | ||
50 | void clear() | ||
51 | { | ||
52 | } | ||
53 | |||
54 | operator | ||
55 | |||
56 | /** | ||
57 | * Get the current size of the list. | ||
58 | *@returns (int) The current size of the list. | ||
59 | */ | ||
60 | int getSize() const | ||
61 | { | ||
62 | return iSize; | ||
63 | } | ||
64 | |||
65 | int getCapacity() const | ||
66 | { | ||
67 | return iCapacity; | ||
68 | } | ||
69 | |||
70 | private: | ||
71 | valuealloc va; | ||
72 | value *pData; | ||
73 | int iSize; | ||
74 | int iCapacity; | ||
75 | }; | ||
76 | } | ||
77 | |||
78 | #endif | ||
@@ -91,6 +91,21 @@ namespace Bu | |||
91 | nSize = 0; | 91 | nSize = 0; |
92 | } | 92 | } |
93 | 93 | ||
94 | void enqueue( const value &v ) | ||
95 | { | ||
96 | append( v ); | ||
97 | } | ||
98 | |||
99 | value dequeue() | ||
100 | { | ||
101 | value v = *pFirst->pValue; | ||
102 | |||
103 | erase( begin() ); | ||
104 | |||
105 | return v; | ||
106 | } | ||
107 | |||
108 | |||
94 | /** | 109 | /** |
95 | * Append a value to the list. | 110 | * Append a value to the list. |
96 | *@param v (const value_type &) The value to append. | 111 | *@param v (const value_type &) The value to append. |