NodeEndRef NodeEndTable::find(const Kmer &kmer) const { // chose a representative kmer Kmer kmerRC = kmer.getReverseComplement(); bool reverse = (doubleStranded) && (kmerRC < kmer); const Kmer &repKmer = (reverse) ? kmerRC : kmer; return NodeEndRef(table.find(repKmer), reverse); }
bool NodeEndTable::insert(const Kmer& kmer, NodeID nodeID) { assert(nodeID != 0); // forbidden value // chose a representative kmer Kmer kmerRC = kmer.getReverseComplement(); bool reverse = (doubleStranded) && (kmerRC < kmer); const Kmer &repKmer = (reverse) ? kmerRC : kmer; if (reverse) nodeID = -nodeID; return table.insert(Value(repKmer, NodeEndMD(nodeID))).second; }