Source Code (Use browser search to find items of interest.)
Class Index
ksokoban'Array (./kdegames/ksokoban/Array.H:36)
class Array {
public:
Array(int size=0);
Array(const Array &init);
~Array();
void add(const T *items, int num);
void add(const T item) { add(&item, 1); }
T &operator [](int i) const {
assert(i >= 0 && i < size_);
return data_[i];
}
Array &operator =(const Array &init);
int size() const { return size_; }
void resize(int size);
private:
T *data_;
int size_;
};
ksokoban'Array::Array() (./kdegames/ksokoban/Array.C:27)
Array<T>::Array(int size) : data_(0), size_(0) {
assert(size >= 0);
resize(size);
}
template <class T>
ksokoban'Array::Array() (./kdegames/ksokoban/Array.C:34)
Array<T>::Array(const Array &init) : data_(0), size_(0) {
add(init.data_, init.size_);
}
template <class T>
ksokoban'Array::~Array() (./kdegames/ksokoban/Array.C:40)
Array<T>::~Array() {
resize(0);
}
template <class T>
void
ksokoban'Array::add() (./kdegames/ksokoban/Array.C:47)
Array<T>::add(const T *items, int num) {
assert(num >= 0);
assert(items != 0);
if (num <= 0) return;
data_ = (T *) realloc(data_, (size_+num) * sizeof (T));
if (data_ == 0) abort();
for (int i=0; i<num; i++) {
new (data_ + size_ + i) T(items[i]);
}
size_ += num;
}
template <class T>
void
ksokoban'Array::resize() (./kdegames/ksokoban/Array.C:66)
Array<T>::resize(int size) {
assert(size >= 0);
for (int i=size; i<size_; i++) {
data_[i].~T();
}
if (size == 0) {
free(data_);
data_ = 0;
size_ = 0;
} else {
data_ = (T *) realloc(data_, size * sizeof (T));
if (data_ == 0) abort();
if (size > size_) {
for (int i=size_; i<size; i++) {
new (data_ + i) T;
}
}
}
size_ = size;
}
template <class T>
Array<T> &