source: trunk/PRIMER_DESIGN/PRD_Node.hxx

Last change on this file was 16766, checked in by westram, 7 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.5 KB
Line 
1#ifndef PRD_NODE_HXX
2#define PRD_NODE_HXX
3
4#include <cstdio>
5#ifndef   PRD_GLOBALS_HXX
6#include "PRD_Globals.hxx"
7#endif
8
9class Node : virtual Noncopyable {
10    void init(Node* parent_, char base_, PRD_Sequence_Pos last_index_, PRD_Sequence_Pos offset_);
11
12public:
13    Node            *parent;
14    Node            *child[4];                          // 0=C 1=G 2=A 3=T/U
15    unsigned char    base;
16    unsigned int     child_bits : 4;                            // see BitField in PRD_Globals.hxx
17    PRD_Sequence_Pos offset;                            // index of base in sequence : left = index of first base of primer, right = index of last base of primer
18    PRD_Sequence_Pos last_base_index;                   // abs(last_base_index) = pos    (last_base_index > 0) ? valid : invalid
19
20    Node (Node* parent_, char base_, PRD_Sequence_Pos last_index_, PRD_Sequence_Pos offset_);
21    Node (Node* parent_, char base_, PRD_Sequence_Pos last_index_);
22    Node (Node* parent_, char base_);
23    Node ();
24    ~Node ();
25
26    Node             *childByBase (unsigned char base_) { return child[CHAR2CHILD.INDEX[base_]]; };
27    bool              isValidPrimer ()           { return last_base_index > 0; };
28    bool              isPrimer ()                { return last_base_index != 0; }
29    bool              isLeaf ()                  { return child_bits == 0; };
30    void              print (); // print subtree started here
31
32};
33
34#else
35#error PRD_Node.hxx included twice
36#endif // PRD_NODE_HXX
Note: See TracBrowser for help on using the repository browser.