#include "agebandmatrixptrvector.h"
#include "errorhandler.h"
#include "gadget.h"
#include "global.h"
AgeBandMatrixPtrVector::AgeBandMatrixPtrVector(int sz) {
size = (sz > 0 ? sz : 0);
if (size > 0)
v = new AgeBandMatrix*[size];
else
v = 0;
}
AgeBandMatrixPtrVector::AgeBandMatrixPtrVector(const AgeBandMatrixPtrVector& initial) {
size = initial.size;
int i;
if (size > 0) {
v = new AgeBandMatrix*[size];
for (i = 0; i < size; i++)
v[i] = initial.v[i];
} else
v = 0;
}
AgeBandMatrixPtrVector::AgeBandMatrixPtrVector(int sz, int minage,
const IntVector& minl, const IntVector& lsize) {
int i;
size = (sz > 0 ? sz : 0);
if (size > 0) {
v = new AgeBandMatrix*[size];
for (i = 0; i < size; i++)
v[i] = new AgeBandMatrix(minage, minl, lsize);
} else
v = 0;
}
AgeBandMatrixPtrVector::~AgeBandMatrixPtrVector() {
int i;
if (v != 0) {
for (i = 0; i < size; i++)
delete v[i];
delete[] v;
v = 0;
}
}
void AgeBandMatrixPtrVector::resize(int addsize, AgeBandMatrix* value) {
if (addsize != 1)
handle.logMessage(LOGFAIL, "Error in agebandmatrixptrvector - cannot add entries to vector");
this->resize(addsize);
v[size - 1] = value;
}
void AgeBandMatrixPtrVector::resize(int addsize) {
if (addsize <= 0)
return;
int i;
if (v == 0) {
size = addsize;
v = new AgeBandMatrix*[size];
} else {
AgeBandMatrix** vnew = new AgeBandMatrix*[addsize + size];
for (i = 0; i < size; i++)
vnew[i] = v[i];
delete[] v;
v = vnew;
size += addsize;
}
}
void AgeBandMatrixPtrVector::resize(int addsize, int minage,
const IntVector& minl, const IntVector& lsize) {
if (addsize <= 0)
return;
int i;
if (v == 0) {
size = addsize;
v = new AgeBandMatrix*[size];
for (i = 0; i < size; i++)
v[i] = new AgeBandMatrix(minage, minl, lsize);
} else {
AgeBandMatrix** vnew = new AgeBandMatrix*[size + addsize];
for (i = 0; i < size; i++)
vnew[i] = v[i];
for (i = size; i < size + addsize; i++)
vnew[i] = new AgeBandMatrix(minage, minl, lsize);
delete[] v;
v = vnew;
size += addsize;
}
}
void AgeBandMatrixPtrVector::resize(int addsize, int minage,
int minl, const PopInfoMatrix& matr) {
if (addsize <= 0)
return;
int i;
if (v == 0) {
size = addsize;
v = new AgeBandMatrix*[size];
for (i = 0; i < size; i++)
v[i] = new AgeBandMatrix(minage, matr, minl);
} else {
AgeBandMatrix** vnew = new AgeBandMatrix*[addsize + size];
for (i = 0; i < size; i++)
vnew[i] = v[i];
for (i = size; i < addsize + size; i++)
vnew[i] = new AgeBandMatrix(minage, matr, minl);
delete[] v;
v = vnew;
size += addsize;
}
}
void AgeBandMatrixPtrVector::Delete(int pos) {
int i;
if (size > 1) {
AgeBandMatrix** vnew = new AgeBandMatrix*[size - 1];
for (i = 0; i < pos; i++)
vnew[i] = v[i];
for (i = pos; i < size - 1; i++)
vnew[i] = v[i + 1];
delete[] v;
v = vnew;
size--;
} else {
delete[] v;
v = 0;
size = 0;
}
}