Revision 1 -
(download)
(annotate)
Mon Feb 10 17:09:07 2014 UTC
(10 years, 5 months ago)
by agomez File size: 2239 byte(s)
Initial version based on Gadget 2.2.00
#include "intmatrix.h"
#include "gadget.h"
IntMatrix::IntMatrix(int nr, int nc, int value) {
nrow = nr;
v = new IntVector*[nr];
int i, j;
for (i = 0; i < nr; i++)
v[i] = new IntVector(nc, value);
}
IntMatrix::IntMatrix(const IntMatrix& initial) : nrow(initial.nrow) {
int i;
if (nrow >= 0) {
v = new IntVector*[nrow];
for (i = 0; i < nrow; i++)
v[i] = new IntVector(initial[i]);
} else {
v = 0;
nrow = 0;
}
}
IntMatrix::~IntMatrix() {
int i;
if (v != 0) {
for (i = 0; i < nrow; i++)
delete v[i];
delete[] v;
v = 0;
}
}
void IntMatrix::AddRows(int add, int length, int value) {
if (add <= 0)
return;
int i;
if (v == 0) {
nrow = add;
v = new IntVector*[nrow];
for (i = 0; i < nrow; i++)
v[i] = new IntVector(length, value);
} else {
IntVector** vnew = new IntVector*[nrow + add];
for (i = 0; i < nrow; i++)
vnew[i] = v[i];
for (i = nrow; i < nrow + add; i++)
vnew[i] = new IntVector(length, value);
delete[] v;
v = vnew;
nrow += add;
}
}
void IntMatrix::Delete(int pos) {
delete v[pos];
int i;
if (nrow > 1) {
IntVector** vnew = new IntVector*[nrow -1];
for (i = 0; i < pos; i++)
vnew[i] = v[i];
for (i = pos; i < nrow - 1; i++)
vnew[i] = v[i + 1];
delete[] v;
v = vnew;
nrow--;
} else {
delete[] v;
v = 0;
nrow = 0;
}
}
IntMatrix& IntMatrix::operator = (const IntMatrix& initial) {
int i;
if (v != 0) {
for (i = 0; i < nrow; i++)
delete v[i];
delete[] v;
}
nrow = initial.nrow;
if (nrow > 0) {
v = new IntVector*[nrow];
for (i = 0; i < nrow; i++)
v[i] = new IntVector(initial[i]);
} else
v = 0;
return *this;
}
void IntMatrix::Reset() {
if (nrow > 0) {
int i;
for (i = 0; i < nrow; i++)
delete v[i];
delete[] v;
v = 0;
nrow = 0;
}
}
void IntMatrix::Print(ofstream& outfile) const {
int i, j;
for (i = 0; i < nrow; i++) {
outfile << TAB;
for (j = 0; j < v[i]->Size(); j++)
outfile << setw(smallwidth) << (*v[i])[j] << sep;
outfile << endl;
}
}
void IntMatrix::setToZero() {
int i;
for (i = 0; i < nrow; i++)
(*v[i]).setToZero();
}