#include #include #include using namespace std; #include "mx_node.h" mx_node::mx_node(){ depth = 0; counter = 0; printed_status = 0; searched_status = 0; kmer = ""; M_child = NULL; X_child = NULL; I_child = NULL; D_child = NULL; parent_node = NULL; stgRNAs = ""; } void mx_node::set_counter(int x){ counter = x; } void mx_node::inc_counter(){ counter++; } const int mx_node::get_counter(){ return counter; } const string mx_node::get_stgRNAs(){ return stgRNAs; } void mx_node::app_stgRNAs(const string stgRNA){ stgRNAs.append(" "); stgRNAs.append(stgRNA); } mx_node* mx_node::set_pointer_M(string& kmer_p, int depth_p, bool end_of_kmer, const string stgRNA){ M_child = new mx_node; M_child->set_kmer(kmer_p, "M"); M_child->set_depth(depth_p); if (end_of_kmer){ M_child->inc_counter(); //M_child->app_stgRNAs(stgRNA); } return M_child; } mx_node* mx_node::get_pointer_M(bool end_of_kmer, const string stgRNA){ if (end_of_kmer){ M_child->inc_counter(); //M_child->app_stgRNAs(stgRNA); } return M_child; } bool mx_node::is_pointer_M(){ if(M_child) return 1; else return 0; } mx_node* mx_node::set_pointer_X(string& kmer_p, int depth_p, bool end_of_kmer, const string stgRNA){ X_child = new mx_node; X_child->set_kmer(kmer_p, "X"); X_child->set_depth(depth_p); if (end_of_kmer) { X_child->inc_counter(); //X_child->app_stgRNAs(stgRNA); } return X_child; } mx_node* mx_node::get_pointer_X(bool end_of_kmer, const string stgRNA){ if (end_of_kmer){ X_child->inc_counter(); //X_child->app_stgRNAs(stgRNA); } return X_child; } bool mx_node::is_pointer_X(){ if(X_child) return 1; else return 0; } mx_node* mx_node::set_pointer_I(string& kmer_p, int depth_p, bool end_of_kmer, const string stgRNA){ I_child = new mx_node; I_child->set_kmer(kmer_p, "I"); I_child->set_depth(depth_p); if (end_of_kmer){ I_child->inc_counter(); //I_child->app_stgRNAs(stgRNA); } return I_child; } mx_node* mx_node::get_pointer_I(bool end_of_kmer, const string stgRNA){ if (end_of_kmer){ I_child->inc_counter(); //I_child->app_stgRNAs(stgRNA); } return I_child; } bool mx_node::is_pointer_I(){ if(I_child) return 1; else return 0; } mx_node* mx_node::set_pointer_D(string& kmer_p, int depth_p, bool end_of_kmer, const string stgRNA){ D_child = new mx_node; D_child->set_kmer(kmer_p, "D"); D_child->set_depth(depth_p); if (end_of_kmer){ D_child->inc_counter(); //D_child->app_stgRNAs(stgRNA); } return D_child; } mx_node* mx_node::get_pointer_D(bool end_of_kmer, const string stgRNA){ if (end_of_kmer){ D_child->inc_counter(); //D_child->app_stgRNAs(stgRNA); } return D_child; } bool mx_node::is_pointer_D(){ if(D_child) return 1; else return 0; } void mx_node::set_depth(int depth_p){ depth = depth_p + 1; } int mx_node::get_depth(){ return depth; } void mx_node::set_kmer(const string& kmer_p, string N) { kmer = kmer_p; kmer.insert(0, N); } const string& mx_node::get_kmer(){ return kmer; } bool mx_node::is_printed(){ return printed_status; } void mx_node::set_printed(){ printed_status = 1; } bool mx_node::is_searched(){ return searched_status; } void mx_node::set_searched(){ searched_status = 1; }