#include "sequence_store.h" extern "C" { #include #include } #include namespace Sequence { constexpr KDColor SequenceStore::k_defaultColors[MaxNumberOfSequences]; constexpr const char * SequenceStore::k_sequenceNames[MaxNumberOfSequences]; uint32_t SequenceStore::storeChecksum() { size_t dataLengthInBytes = MaxNumberOfSequences*sizeof(uint32_t); assert((dataLengthInBytes & 0x3) == 0); // Assert that dataLengthInBytes is a multiple of 4 uint32_t checksums[MaxNumberOfSequences]; for (int i = 0; i < MaxNumberOfSequences; i++) { checksums[i] = m_sequences[i].checksum(); } return Ion::crc32((uint32_t *)checksums, dataLengthInBytes/sizeof(uint32_t)); } Sequence * SequenceStore::functionAtIndex(int i) { assert(i>=0 && i=0 && iresetCache(); } int SequenceStore::maxNumberOfFunctions() { return MaxNumberOfSequences; } char SequenceStore::symbol() const { return 'n'; } const char * SequenceStore::firstAvailableName() { for (int k = 0; k < MaxNumberOfSequences; k++) { int j = 0; while (j < m_numberOfFunctions) { if (m_sequences[j].name() == k_sequenceNames[k]) { break; } j++; } if (j == m_numberOfFunctions) { return k_sequenceNames[k]; } } return k_sequenceNames[0]; } const KDColor SequenceStore::firstAvailableColor() { for (int k = 0; k < MaxNumberOfSequences; k++) { int j = 0; while (j < m_numberOfFunctions) { if (m_sequences[j].color() == k_defaultColors[k]) { break; } j++; } if (j == m_numberOfFunctions) { return k_defaultColors[k]; } } return k_defaultColors[0]; } void SequenceStore::removeAll() { for (int i = 0; i < m_numberOfFunctions; i++) { Sequence emptySequence("", KDColorBlack); m_sequences[i] = emptySequence; } m_numberOfFunctions = 0; //sqctx->resetCache(); } }