// comparison function int CTextseq_id::Compare(const CTextseq_id& tsip2) const { // Check Accessions first // no-accession before accession if ( int diff = IsSetAccession() - tsip2.IsSetAccession() ) { return diff; } if ( IsSetAccession() ) { _ASSERT(tsip2.IsSetAccession()); // sort by accession if ( int diff = PNocase().Compare(GetAccession(), tsip2.GetAccession()) ) { return diff; } } // Check version // no-version before version if ( int diff = IsSetVersion() - tsip2.IsSetVersion() ) { return diff; } if ( IsSetVersion() ) { _ASSERT(tsip2.IsSetVersion()); // smaller version first if ( int diff = GetVersion() - tsip2.GetVersion() ) { return diff; } } if ( IsSetAccession() && IsSetVersion() ) { // acc.ver are the same -> equal Seq-ids return 0; } // Check name // no-name before name if ( int diff = IsSetName() - tsip2.IsSetName() ) { return diff; } if ( IsSetName() ) { _ASSERT(tsip2.IsSetName()); if ( int diff = PNocase().Compare(GetName(), tsip2.GetName()) ) { return diff; } } // All checks failed to distinguish Seq-ids. return 0; }
// comparison function bool CTextseq_id::Match(const CTextseq_id& tsip2) const { // Check Accessions first if (IsSetAccession() && tsip2.IsSetAccession()) { if ( PNocase().Equals(GetAccession(), tsip2.GetAccession()) ) { if (IsSetVersion() && tsip2.IsSetVersion()) { return GetVersion() == tsip2.GetVersion(); } else { return true; } } else { return false; } } // then try name if (IsSetName() && tsip2.IsSetName()) { if ( PNocase().Equals(GetName(), tsip2.GetName()) ) { if (IsSetVersion() && tsip2.IsSetVersion()) { return GetVersion() == tsip2.GetVersion(); } else { return true; } } else { return false; } } //nothing to compare return false; }
// Appends a label to "label" based on content void CProt_ref::GetLabel(string* label) const { if (IsSetName() && GetName().size() > 0) { *label += *GetName().begin(); } else if (IsSetDesc()) { *label += GetDesc(); } else if (IsSetDb()) { GetDb().front()->GetLabel(label); } }
// format the contents FASTA string style ostream& CTextseq_id::AsFastaString(ostream& s, bool allow_version) const { if (IsSetAccession()) { s << GetAccession(); // no Upcase per Ostell - Karl 7/2001 if (allow_version && IsSetVersion()) { int version = GetVersion(); if (version) { s << '.' << version; } } } s << '|'; if ( IsSetName() ) { s << GetName(); // no Upcase per Ostell - Karl 7/2001 } return s; }