/** * Adds one matrix to another. * Addition is defined by taking the maximum dimension value of each position * in the summand matrices. * * @param im the matrix to add */ void IntersectionMatrix::add(IntersectionMatrix *im) { for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { setAtLeast(i,j,im->get(i,j)); } } }
/*public*/ void IntersectionMatrix::add(IntersectionMatrix* other) { for(int i = 0; i < firstDim; i++) { for(int j = 0; j < secondDim; j++) { setAtLeast(i, j, other->get(i, j)); } } }
/*public*/ void IntersectionMatrix::setAtLeastIfValid(int row, int col, int minimumDimensionValue) { assert( row >= 0 && row < firstDim ); assert( col >= 0 && col < secondDim ); if (row >= 0 && col >= 0) { setAtLeast(row, col, minimumDimensionValue); } }
void IntersectionMatrix::setAtLeast(string minimumDimensionSymbols) { unsigned int limit; if ((unsigned int)minimumDimensionSymbols.length()<=9) limit=(unsigned int)minimumDimensionSymbols.length(); else limit=9; for (unsigned int i = 0; i < limit; i++) { int row = i / 3; int col = i % 3; setAtLeast(row, col, Dimension::toDimensionValue(minimumDimensionSymbols[i])); } }
/*public*/ void IntersectionMatrix::setAtLeast(string minimumDimensionSymbols) { size_t limit = minimumDimensionSymbols.length(); for (size_t i = 0; i < limit; i++) { int row = i / firstDim; int col = i % secondDim; setAtLeast(row, col, Dimension::toDimensionValue(minimumDimensionSymbols[i])); } }
void IntersectionMatrix::setAtLeastIfValid(int row, int column, int minimumDimensionValue) { if (row >= 0 && column >= 0) { setAtLeast(row, column, minimumDimensionValue); } }