1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
/*
Ray
Copyright (C) 2011, 2012 Sébastien Boisvert
http://DeNovoAssembler.SourceForge.Net/
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You have received a copy of the GNU General Public License
along with this program (gpl-3.0.txt).
see <http://www.gnu.org/licenses/>
*/
#include "GridTableIterator.h"
#include <RayPlatform/structures/MyHashTableIterator.h>
#include <assert.h>
#include <iostream>
using namespace std;
void GridTableIterator::constructor(GridTable*a,int wordSize,Parameters*parameters){
m_parameters=parameters;
m_mustProcessOtherKey=false;
m_iterator.constructor(a->getHashTable());
}
bool GridTableIterator::hasNext(){
bool iteratorHasNext=m_iterator.hasNext()||m_mustProcessOtherKey;
return iteratorHasNext;
}
Vertex*GridTableIterator::next(){
if(m_mustProcessOtherKey){
m_mustProcessOtherKey=false;
m_currentKey=m_currentKey.complementVertex(m_parameters->getWordSize(),m_parameters->getColorSpaceMode());
return m_currentEntry;
}
#ifdef CONFIG_ASSERT
assert(hasNext());
#endif
m_currentEntry=m_iterator.next();
m_currentKey=m_currentEntry->getKey();
m_mustProcessOtherKey=true;
return m_currentEntry;
}
Kmer*GridTableIterator::getKey(){
return &m_currentKey;
}
|