| 153 | |
| 154 | template <class T> |
| 155 | void |
| 156 | CacheArray<T>::resize(int new_size) |
| 157 | { |
| 158 | if (new_size > size) { |
| 159 | T *new_data; |
| 160 | int i; |
| 161 | |
| 162 | if (new_size > FAST_DATA_SIZE) { |
| 163 | new_data = new T[new_size]; |
| 164 | } else { |
| 165 | new_data = fast_data; |
| 166 | } |
| 167 | |
| 168 | for (i = 0; i < size; i++) { |
| 169 | new_data[i] = data[i]; |
| 170 | } |
| 171 | |
| 172 | for (; i < new_size; i++) { |
| 173 | new_data[i] = *default_val; |
| 174 | } |
| 175 | |
| 176 | if (data) { |
| 177 | if (data != fast_data) { |
| 178 | delete[] data; |
| 179 | } |
| 180 | } |
| 181 | data = new_data; |
| 182 | size = new_size; |
| 183 | } |
| 184 | } |
no outgoing calls