diff options
author | Mike Buland <eichlan@xagasoft.com> | 2010-10-14 23:26:25 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2010-10-14 23:26:25 +0000 |
commit | 867dae89929a11a421ec21af71d494ad0ecc1963 (patch) | |
tree | 85d4330d5cdc0567194f1bfb2f9b1bda4e95b444 /src/array.h | |
parent | 13fa07280dd9ed2c62ad2be0848f88b0d85fe322 (diff) | |
download | libbu++-867dae89929a11a421ec21af71d494ad0ecc1963.tar.gz libbu++-867dae89929a11a421ec21af71d494ad0ecc1963.tar.bz2 libbu++-867dae89929a11a421ec21af71d494ad0ecc1963.tar.xz libbu++-867dae89929a11a421ec21af71d494ad0ecc1963.zip |
SharedCore has more features now, which is cool, including a test to see if
another object of the parent type has the same core, and another to clone the
parent object. That one is pretty cool, it means you can now get a real copy
when you want to, great for multi-threaded stuff.
Also, two more classes are now SharedCore: Hash and Heap!
Diffstat (limited to 'src/array.h')
-rw-r--r-- | src/array.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/array.h b/src/array.h index eeee677..fc4fb12 100644 --- a/src/array.h +++ b/src/array.h | |||
@@ -18,9 +18,17 @@ namespace Bu | |||
18 | subExceptionDecl( ArrayException ) | 18 | subExceptionDecl( ArrayException ) |
19 | 19 | ||
20 | template<typename value, int inc, typename valuealloc> | 20 | template<typename value, int inc, typename valuealloc> |
21 | class Array; | ||
22 | |||
23 | template<typename value, int inc, typename valuealloc> | ||
21 | class ArrayCore | 24 | class ArrayCore |
22 | { | 25 | { |
23 | public: | 26 | friend class Array<value, inc, valuealloc>; |
27 | friend class SharedCore< | ||
28 | Array<value, inc, valuealloc>, | ||
29 | ArrayCore<value, inc, valuealloc> | ||
30 | >; | ||
31 | private: | ||
24 | ArrayCore() : | 32 | ArrayCore() : |
25 | pData( NULL ), | 33 | pData( NULL ), |
26 | iSize( 0 ), | 34 | iSize( 0 ), |
@@ -110,16 +118,20 @@ namespace Bu | |||
110 | *@ingroup Containers | 118 | *@ingroup Containers |
111 | */ | 119 | */ |
112 | template<typename value, int inc=10, typename valuealloc=std::allocator<value> > | 120 | template<typename value, int inc=10, typename valuealloc=std::allocator<value> > |
113 | class Array : public SharedCore<ArrayCore<value, inc, valuealloc> > | 121 | class Array : public SharedCore< |
122 | Array<value, inc, valuealloc>, | ||
123 | ArrayCore<value, inc, valuealloc> | ||
124 | > | ||
114 | { | 125 | { |
115 | private: | 126 | private: |
116 | typedef class Array<value, inc, valuealloc> MyType; | 127 | typedef class Array<value, inc, valuealloc> MyType; |
117 | typedef class ArrayCore<value, inc, valuealloc> Core; | 128 | typedef class ArrayCore<value, inc, valuealloc> Core; |
118 | 129 | ||
119 | protected: | 130 | protected: |
120 | using SharedCore< Core >::core; | 131 | using SharedCore<MyType, Core>::core; |
121 | using SharedCore< Core >::_hardCopy; | 132 | using SharedCore<MyType, Core>::_hardCopy; |
122 | using SharedCore< Core >::_allocateCore; | 133 | using SharedCore<MyType, Core>::_resetCore; |
134 | using SharedCore<MyType, Core>::_allocateCore; | ||
123 | 135 | ||
124 | public: | 136 | public: |
125 | struct const_iterator; | 137 | struct const_iterator; |
@@ -130,7 +142,7 @@ namespace Bu | |||
130 | } | 142 | } |
131 | 143 | ||
132 | Array( const MyType &src ) : | 144 | Array( const MyType &src ) : |
133 | SharedCore< Core >( src ) | 145 | SharedCore<MyType, Core >( src ) |
134 | { | 146 | { |
135 | } | 147 | } |
136 | 148 | ||
@@ -168,8 +180,7 @@ namespace Bu | |||
168 | */ | 180 | */ |
169 | void clear() | 181 | void clear() |
170 | { | 182 | { |
171 | _hardCopy(); | 183 | _resetCore(); |
172 | core->clear(); | ||
173 | } | 184 | } |
174 | 185 | ||
175 | MyType &append( const value &rVal ) | 186 | MyType &append( const value &rVal ) |