/usr/include/libGenome-1.3/libGenome/gnCompare.h is in libgenome-1.3-dev 1.3.1-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | /////////////////////////////////////////////////////////////////////////////
// File: gnCompare.h
// Purpose: Compares all sequences
// Description: Compares sequences
// Changes:
// Version: libGenome 0.5.1
// Author: Aaron Darling
// Modified by:
// Copyright: (c) Aaron Darling
// Licenses: See COPYING file for details
/////////////////////////////////////////////////////////////////////////////
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifndef _gnCompare_h_
#define _gnCompare_h_
#include "libGenome/gnDefs.h"
#include <string>
#include <cstring>
#include <cctype>
#include "libGenome/gnClone.h"
namespace genome {
class GNDLLEXPORT gnCompare : public gnClone
{
public:
/**
* Returns a pointer to a ready to use Protein comparison object
* <b>Do not delete</b> the object when finished with it, it is a static object.
*/
static const gnCompare *ProteinSeqCompare();
/**
* Returns a pointer to a ready to use DNA comparison object
* This comparator can handle comparisons between ambiguous DNA sequences.
* <b>Do not delete</b> the object when finished with it, it is a static object.
*/
static const gnCompare *DNASeqCompare();
/**
* Returns a pointer to a ready to use RNA comparison object
* This comparator can handle comparisons between ambiguous RNA sequences.
* <b>Do not delete</b> the object when finished with it, it is a static object.
*/
static const gnCompare *RNASeqCompare();
enum gnCompareType{
ProteinSeqCompareType,
DNASeqCompareType,
RNASeqCompareType,
};
gnCompare();
/**
* Creates a gnCompare for a predefined compare type.
* Used by the static compare constructors to avoid the "static initialization order fiasco"
* For general use of a predefined comaprison type, you should use one of the static
* member functions to get a pointer to that comparison object.
* @param c_type The type of comparator to create.
* @see gnCompareType
*/
gnCompare( const gnCompareType c_type );
~gnCompare();
gnCompare* Clone() const;
std::string GetName() const;
void SetName( std::string name );
// Use less than comparisons since all other operators can be derived
// gnSeqC less than operations
boolean LessThan( gnSeqC ch, gnSeqC ch2, boolean case_sensitive = false) const;
/** True if ch2 is equal to or contained within the scope of ch
*
*/
boolean Contains( gnSeqC ch, gnSeqC ch2, boolean case_sensitive = false ) const;
// True if ch2 is general enough to equal ch
// gnSeqC[] less than operations
boolean LessThan( const gnSeqC* seq, const gnSeqC* seq2, const uint32 len, boolean case_sensitive = false ) const;
boolean Contains( const gnSeqC* seq, const gnSeqC* seq2, const uint32 len, boolean case_sensitive = false ) const;
// std::string
boolean LessThan( const std::string &seq, const std::string &seq2, boolean case_sensitive = false) const;
boolean Contains( const std::string &seq, const std::string &seq2, boolean case_sensitive = false) const;
// fill map
//adds a character which is equivalent to itself
void SetSingle( const gnSeqC ch );
//adds a pair of equivalent characters
void SetPair( const gnSeqC ch, const gnSeqC ch2 );
//adds ch as being wholly contained by ch2
void SetContained( const gnSeqC ch, const gnSeqC ch2 );
void RemoveSingle( const gnSeqC ch );
void RemovePair( const gnSeqC ch, const gnSeqC ch2 );
void RemoveContained( const gnSeqC ch, const gnSeqC ch2 );
private:
gnCompare( const gnCompare& sf ){};
void CreateProteinComparator();
void CreateDNAComparator();
void CreateRNAComparator();
void AddArrayEntry( gnSeqC *array[GNSEQC_MAX], const gnSeqC ch, const gnSeqC ch2);
void DelArrayEntry( gnSeqC *array[GNSEQC_MAX], const gnSeqC ch, const gnSeqC ch2);
std::string m_name;
boolean m_ignoreCase;
gnSeqC* m_pairArray[GNSEQC_MAX];
gnSeqC* m_containArray[GNSEQC_MAX];
};//class gnCompare
inline
gnCompare* gnCompare::Clone() const{
return new gnCompare(*this);
}
inline
std::string gnCompare::GetName() const{
return m_name;
}
inline
void gnCompare::SetName( std::string name ){
m_name = name;
}
// gnSeqC
inline
boolean gnCompare::LessThan( gnSeqC ch, gnSeqC ch2, boolean case_sensitive) const
{
if(!case_sensitive){
ch = toupper(ch);
ch2 = toupper(ch2);
}
if(strchr(m_pairArray[ch], ch2) == 0)
return ch < ch2 ? true : false;
return false;
}
// gnSeqC[]
inline
boolean gnCompare::LessThan( const gnSeqC* seq, const gnSeqC* seq2, const uint32 len, boolean case_sensitive ) const{
for( uint32 i=0; i < len ; ++i )
if(LessThan(seq[i], seq2[i], case_sensitive))
return true;
return false;
}
// std::string
inline
boolean gnCompare::LessThan( const std::string &seq, const std::string &seq2, boolean case_sensitive) const
{
gnSeqI shorter_len = seq.length() < seq2.length() ? seq.length() : seq2.length();
return LessThan( (gnSeqC*)seq.data(), (gnSeqC*)seq2.data(), shorter_len, case_sensitive );
}
// fill map
inline
void gnCompare::SetSingle( const gnSeqC ch ){
AddArrayEntry(m_pairArray, ch, ch);
AddArrayEntry(m_containArray, ch, ch);
}
inline
void gnCompare::SetPair( const gnSeqC ch, const gnSeqC ch2 ){
AddArrayEntry(m_pairArray, ch, ch2);
AddArrayEntry(m_pairArray, ch2, ch);
}
inline
void gnCompare::SetContained( const gnSeqC ch, const gnSeqC ch2 ){
AddArrayEntry(m_containArray, ch2, ch);
}
inline
void gnCompare::RemoveSingle( const gnSeqC ch )
{
DelArrayEntry(m_pairArray, ch, ch);
DelArrayEntry(m_containArray, ch, ch);
}
inline
void gnCompare::RemovePair( const gnSeqC ch, const gnSeqC ch2 )
{
DelArrayEntry(m_pairArray, ch, ch2);
DelArrayEntry(m_pairArray, ch2, ch);
}
inline
void gnCompare::RemoveContained( const gnSeqC ch, const gnSeqC ch2 )
{
DelArrayEntry(m_containArray, ch2, ch);
}
} // end namespace genome
#endif
// _gnSeqCompare_h_
|