1
// =============================================================== //
3
// File : PRD_SearchFIFO.hxx //
6
// Coded by Wolfram Foerster in February 2001 //
7
// Institute of Microbiology (Technical University Munich) //
8
// http://www.arb-home.de/ //
10
// =============================================================== //
1
12
#ifndef PRD_SEARCHFIFO_HXX
2
13
#define PRD_SEARCHFIFO_HXX
4
#ifndef PRD_GLOBALS_HXX
5
#include "PRD_Globals.hxx"
7
15
#ifndef PRD_NODE_HXX
8
16
#include "PRD_Node.hxx"
17
25
SearchParameter *previous;
28
class SearchFIFO : virtual Noncopyable {
23
29
SearchParameter *begin; // start of list of positions in tree
24
30
SearchParameter *end; // end of list of positions in tree
25
31
SearchParameter *current; // points to the currently examined position in the list
27
33
Node *root; // rootnode of primertree to be searched in
28
bool expand_IUPAC_Codes; // enable/disable expasnion of IUPAC codes
34
bool expand_IUPAC_Codes; // enable/disable expansion of IUPAC codes
29
35
PRD_Sequence_Pos min_distance_to_next_match; // if a match is found out of that distance its ignored (not deleted)
31
void init( Node *root_, PRD_Sequence_Pos min_distance_to_next_match_, bool expand_IUPAC_Codes_ );
32
void erase ( SearchParameter *param_ ); // erase the position from the list (tries not to invalidate current)
33
void push_front ( Node *child_of_current_ ); // append new position in front of the list
37
void init(Node *root_, PRD_Sequence_Pos min_distance_to_next_match_, bool expand_IUPAC_Codes_);
38
void erase (SearchParameter *param_); // erase the position from the list (tries not to invalidate current)
39
void push_front (Node *child_of_current_); // append new position in front of the list
37
SearchFIFO ( Node *root_, PRD_Sequence_Pos min_distance_to_next_match_, bool expand_IUPAC_Codes_ );
43
SearchFIFO (Node *root_, PRD_Sequence_Pos min_distance_to_next_match_, bool expand_IUPAC_Codes_);
41
void push ( unsigned char base_ ); // append new position (node=root) to the end of the list
42
void iterateWith ( PRD_Sequence_Pos pos_, unsigned char base_ ); // tries to iterate all positions in the list with the given base
47
void push (unsigned char base_); // append new position (node=root) to the end of the list
48
void iterateWith (PRD_Sequence_Pos pos_, unsigned char base_); // tries to iterate all positions in the list with the given base
43
49
void flush (); // erase all positions of the list
44
50
void print (); // print all positions in the list