source: tags/arb_5.1/NALIGNER/ali_sequence.hxx

Last change on this file was 5183, checked in by westram, 16 years ago
  • fixed shadow warnings
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.0 KB
Line 
1
2#ifndef _ALI_SEQUENCE_INC_
3#define _ALI_SEQUENCE_INC_
4
5#include <string.h>
6// #include <malloc.h>
7
8#include "ali_misc.hxx"
9
10
11class ALI_SEQUENCE {
12    unsigned char *seq;
13    char *seq_name;
14    unsigned long seq_len;
15public:
16    ALI_SEQUENCE(char *Name, char *str) {
17        seq = (unsigned char *) str;
18        seq_len = strlen(str);
19        seq_name = strdup(Name);
20        ali_string_to_sequence(str);
21        if (seq_name == 0) ali_fatal_error("Out of memory");
22    }
23    ALI_SEQUENCE(char *Name, unsigned char *str, unsigned long str_len) {
24        seq = str;
25        seq_len = str_len;
26        seq_name = strdup(Name);
27    }
28    ~ALI_SEQUENCE(void) {
29        if (seq)
30            free((char *) seq);
31        if (seq_name)
32            free((char *) seq_name);
33    }
34    unsigned char *sequence(void) {
35        return seq;
36    }
37    unsigned char base(unsigned long position) {
38        return seq[position];
39    }
40    int check(void);
41    char *string(void);
42    char *name(void) {
43        return seq_name;
44    }
45    unsigned long length(void) {
46        return seq_len;
47    }
48};
49
50
51class ALI_NORM_SEQUENCE {
52    unsigned char *seq;
53    char *seq_name;
54    unsigned char **dots;
55    unsigned long seq_len;
56public:
57    ALI_NORM_SEQUENCE(char *name, char *str);
58    ALI_NORM_SEQUENCE(ALI_SEQUENCE *sequence);
59    ~ALI_NORM_SEQUENCE(void) {
60        if (seq)
61            free((char *) seq);
62        if (seq_name)
63            free((char *) seq_name);
64        if (dots)
65            free((char *) dots);
66    }
67    unsigned char *sequence(void) {
68        return seq;
69    }
70    unsigned char base(unsigned long position) {
71        return seq[position];
72    }
73    char *string(void);
74    char *name(void) {
75        return seq_name;
76    }
77    unsigned long length(void) {
78        return seq_len;
79    }
80    int is_begin(unsigned long pos) {
81        if (dots == 0)
82            return 0;
83        else {
84            if (pos > seq_len)
85                return 1;
86            else
87                return (((*dots)[pos/8] & (unsigned char) (1<<(7-(pos%8)))) != 0);
88        }
89    }
90};
91
92#endif
Note: See TracBrowser for help on using the repository browser.