bool AVIIndex::makeIndex() { if (!allocateIndex(total_ents)) return false; put(indexPtr()); return true; }
//-------------------------------------------------------------------------------------------------------------- // build the index void ImplAlignmentMatrixDiagonal::buildIndex() const { Position i; mNumDiagonals = (mColTo - mColFrom) + (mRowTo - mRowFrom) + 1; Dot ndots = mPairs.size(); // allocate and initialize memory memory // add one extra element as a terminator // to simplify mapRowToCol allocateIndex( mNumDiagonals + 1); for (i = 0; i <= mNumDiagonals; i++) { mIndex[i] = NODOT; } Dot first_dot = 0; Diagonal diagonal = calculateNormalizedDiagonal( mPairs[0], mRowFrom, mColFrom); Diagonal min_diagonal = -(mRowTo - mRowFrom); // update mIndex for (i = 0; i < ndots; i++) { Diagonal next_diagonal = calculateNormalizedDiagonal(mPairs[i], mRowFrom, mColFrom); if(diagonal != next_diagonal) { mIndex[diagonal - min_diagonal] = first_dot; first_dot = i; diagonal = next_diagonal; } } mIndex[diagonal - min_diagonal] = first_dot; }