Revision 1 -
(download)
(annotate)
Mon Feb 10 17:09:07 2014 UTC
(10 years, 5 months ago)
by agomez File size: 1785 byte(s)
Initial version based on Gadget 2.2.00
#include "formulamatrix.h"
#include "gadget.h"
FormulaMatrix::FormulaMatrix(int nr, int nc, Formula initial) {
int i;
nrow = nr;
if (nrow > 0) {
v = new FormulaVector*[nr];
for (i = 0; i < nr; i++)
v[i] = new FormulaVector(nc, initial);
} else
v = 0;
}
FormulaMatrix::FormulaMatrix(int nr, int nc, double initial) {
int i;
nrow = nr;
if (nrow > 0) {
v = new FormulaVector*[nr];
for (i = 0; i < nr; i++)
v[i] = new FormulaVector(nc, initial);
} else
v = 0;
}
FormulaMatrix::~FormulaMatrix() {
int i;
if (v != 0) {
for (i = 0; i < nrow; i++)
delete v[i];
delete[] v;
}
}
void FormulaMatrix::AddRows(int add, int length, Formula value) {
if (add <= 0)
return;
int i;
if (v == 0) {
nrow = add;
v = new FormulaVector*[nrow];
for (i = 0; i < nrow; i++)
v[i] = new FormulaVector(length, value);
} else {
FormulaVector** vnew = new FormulaVector*[add + nrow];
for (i = 0; i < nrow; i++)
vnew[i] = v[i];
for (i = nrow; i < nrow + add; i++)
vnew[i] = new FormulaVector(length, value);
delete[] v;
v = vnew;
nrow += add;
}
}
void FormulaMatrix::AddRows(int add, int length, double value) {
if (add <= 0)
return;
int i;
if (v == 0) {
nrow = add;
v = new FormulaVector*[nrow];
for (i = 0; i < nrow; i++)
v[i] = new FormulaVector(length, value);
} else {
FormulaVector** vnew = new FormulaVector*[add + nrow];
for (i = 0; i < nrow; i++)
vnew[i] = v[i];
for (i = nrow; i < nrow + add; i++)
vnew[i] = new FormulaVector(length, value);
delete[] v;
v = vnew;
nrow += add;
}
}
void FormulaMatrix::Inform(Keeper* keeper) {
int i;
for (i = 0; i < nrow; i++)
v[i]->Inform(keeper);
}