source: tags/initial/NALIGNER/ali_sequence.hxx

Last change on this file was 2, checked in by oldcode, 24 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.7 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.