diff options
| -rw-r--r-- | src/hash.h | 15 | ||||
| -rw-r--r-- | src/list.h | 34 |
2 files changed, 41 insertions, 8 deletions
| @@ -268,7 +268,7 @@ namespace Bu | |||
| 268 | 268 | ||
| 269 | for( uint32_t j = 0; j < src.nCapacity; j++ ) | 269 | for( uint32_t j = 0; j < src.nCapacity; j++ ) |
| 270 | { | 270 | { |
| 271 | if( src.isFilled( j ) ) | 271 | if( src.isFilled( j ) && !src.isDeleted( j ) ) |
| 272 | { | 272 | { |
| 273 | insert( src.aKeys[j], src.aValues[j] ); | 273 | insert( src.aKeys[j], src.aValues[j] ); |
| 274 | } | 274 | } |
| @@ -283,12 +283,11 @@ namespace Bu | |||
| 283 | { | 283 | { |
| 284 | for( uint32_t j = 0; j < nCapacity; j++ ) | 284 | for( uint32_t j = 0; j < nCapacity; j++ ) |
| 285 | { | 285 | { |
| 286 | if( isFilled( j ) ) | 286 | if( isFilled( j ) && !isDeleted( j ) ) |
| 287 | if( !isDeleted( j ) ) | 287 | { |
| 288 | { | 288 | va.destroy( &aValues[j] ); |
| 289 | va.destroy( &aValues[j] ); | 289 | ka.destroy( &aKeys[j] ); |
| 290 | ka.destroy( &aKeys[j] ); | 290 | } |
| 291 | } | ||
| 292 | } | 291 | } |
| 293 | va.deallocate( aValues, nCapacity ); | 292 | va.deallocate( aValues, nCapacity ); |
| 294 | ka.deallocate( aKeys, nCapacity ); | 293 | ka.deallocate( aKeys, nCapacity ); |
| @@ -310,7 +309,7 @@ namespace Bu | |||
| 310 | 309 | ||
| 311 | for( uint32_t j = 0; j < src.nCapacity; j++ ) | 310 | for( uint32_t j = 0; j < src.nCapacity; j++ ) |
| 312 | { | 311 | { |
| 313 | if( src.isFilled( j ) ) | 312 | if( src.isFilled( j ) && !src.isDeleted( j ) ) |
| 314 | { | 313 | { |
| 315 | insert( src.aKeys[j], src.aValues[j] ); | 314 | insert( src.aKeys[j], src.aValues[j] ); |
| 316 | } | 315 | } |
| @@ -82,6 +82,18 @@ namespace Bu | |||
| 82 | return *this; | 82 | return *this; |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | MyType &operator+=( const value &v ) | ||
| 86 | { | ||
| 87 | append( v ); | ||
| 88 | return *this; | ||
| 89 | } | ||
| 90 | |||
| 91 | MyType &operator+=( const MyType &src ) | ||
| 92 | { | ||
| 93 | append( src ); | ||
| 94 | return *this; | ||
| 95 | } | ||
| 96 | |||
| 85 | /** | 97 | /** |
| 86 | * Clear the data from the list. | 98 | * Clear the data from the list. |
| 87 | */ | 99 | */ |
| @@ -142,6 +154,15 @@ namespace Bu | |||
| 142 | } | 154 | } |
| 143 | } | 155 | } |
| 144 | 156 | ||
| 157 | void append( const MyType &rSrc ) | ||
| 158 | { | ||
| 159 | for( typename MyType::const_iterator i = rSrc.begin(); | ||
| 160 | i != rSrc.end(); i++ ) | ||
| 161 | { | ||
| 162 | append( *i ); | ||
| 163 | } | ||
| 164 | } | ||
| 165 | |||
| 145 | /** | 166 | /** |
| 146 | * Prepend a value to the list. | 167 | * Prepend a value to the list. |
| 147 | *@param v (const value_type &) The value to prepend. | 168 | *@param v (const value_type &) The value to prepend. |
| @@ -168,6 +189,19 @@ namespace Bu | |||
| 168 | } | 189 | } |
| 169 | 190 | ||
| 170 | /** | 191 | /** |
| 192 | * Prepend another list to the front of this one. This will prepend | ||
| 193 | * the rSrc list in reverse order...I may fix that later. | ||
| 194 | */ | ||
| 195 | void prepend( const MyType &rSrc ) | ||
| 196 | { | ||
| 197 | for( typename MyType::const_iterator i = rSrc.begin(); | ||
| 198 | i != rSrc.end(); i++ ) | ||
| 199 | { | ||
| 200 | prepend( *i ); | ||
| 201 | } | ||
| 202 | } | ||
| 203 | |||
| 204 | /** | ||
| 171 | * Insert a new item in sort order by searching for the first item that | 205 | * Insert a new item in sort order by searching for the first item that |
| 172 | * is larger and inserting this before it, or at the end if none are | 206 | * is larger and inserting this before it, or at the end if none are |
| 173 | * larger. If this is the only function used to insert data in the | 207 | * larger. If this is the only function used to insert data in the |
