Update mussa to build on ubuntu 10.04 with qt 4.6.2 +boost 1.40.0.1
[mussa.git] / mussa_exceptions.hpp
1 #ifndef _MUSSA_EXCEPTIONS_H_
2 #define _MUSSA_EXCEPTIONS_H_
3 #include <stdexcept>
4 #include <boost/filesystem/exception.hpp>
5
6 //! base mussa exception
7 class mussa_error : public std::runtime_error
8 {
9 public:
10   explicit mussa_error(const std::string& msg): std::runtime_error(msg) {};
11 };
12
13 //! Error processing commandline arguments
14 class cmdline_error : public mussa_error
15 {
16 public:
17   explicit cmdline_error(const std::string& msg): mussa_error(msg) {};
18 };
19 //! Error trying to save 
20 class mussa_save_error : public mussa_error
21 {
22 public:
23   explicit mussa_save_error(const std::string& msg) :
24     mussa_error(msg) {};
25 };
26 //! Error loading information
27 class mussa_load_error : public mussa_error
28 {
29 public:
30   explicit mussa_load_error(const std::string& msg) : 
31     mussa_error(msg) {};
32 };
33
34 //! error doing a key lookup in the annotations class
35 class annotations_key_error : public mussa_error {
36 public:
37   explicit annotations_key_error(const std::string& msg) : 
38     mussa_error(msg) {};
39 };
40
41 //! Error loading sequence
42 class sequence_load_error : public mussa_load_error
43 {
44 public:
45   explicit sequence_load_error(const std::string& msg) :
46     mussa_load_error(msg) {};
47 };
48
49 // Empty sequence
50 class sequence_empty_error : public sequence_load_error 
51 {
52 public:
53   explicit sequence_empty_error(const std::string& msg) :
54     sequence_load_error(msg) {};
55 };
56
57 // Empty fasta file
58 class sequence_empty_file_error : public sequence_load_error 
59 {
60 public:
61   explicit sequence_empty_file_error(const std::string& msg) :
62     sequence_load_error(msg) {};
63 };
64
65 // Empty unrecognized characters
66 class sequence_invalid_load_error : public sequence_load_error 
67 {
68 public:
69   explicit sequence_invalid_load_error(const std::string& msg) :
70     sequence_load_error(msg) {};
71 };
72
73 //! Incomprehensible comparison
74 class sequence_invalid_comparison : public mussa_error
75 {
76 public:
77   explicit sequence_invalid_comparison(const std::string& msg) :
78     mussa_error(msg) {};
79 };
80
81 //! Invalid strand identifier
82 class sequence_invalid_strand : public mussa_error
83 {
84 public:
85   explicit sequence_invalid_strand(const std::string& msg) :
86     mussa_error(msg) {};
87 };
88
89 //! Error loading sequence annotation
90 class annotation_load_error : public sequence_load_error
91 {
92 public:
93   explicit annotation_load_error(const std::string& msg) :
94     sequence_load_error(msg) {};
95 };
96
97 //! failure running analysis
98 class mussa_analysis_error : public mussa_error
99 {
100 public:
101   explicit mussa_analysis_error(const std::string& msg) : 
102     mussa_error(msg) {};
103 };
104
105 //! failure running seqcomp
106 class seqcomp_error : public mussa_analysis_error
107 {
108 public:
109   explicit seqcomp_error(const std::string& msg) : 
110     mussa_analysis_error(msg) {};
111 };
112
113 //! couldn't normalize a motif
114 /*
115 class motif_normalize_error : public mussa_error
116 {
117 public:
118   explicit motif_normalize_error(const std::string& msg) : 
119     mussa_error(msg) {};
120 };
121 */
122
123 //! something went wrong loading a motif  
124 class motif_load_error : public mussa_load_error
125 {
126 public:
127   explicit motif_load_error(const std::string& msg) :
128     mussa_load_error(msg) {};
129 };
130
131 //! ConservedPath::nextTo had two paths that weren't the same size
132 class conserved_path_size_mismatch : public mussa_error
133 {
134 public:
135   explicit conserved_path_size_mismatch(const std::string& msg) :
136     mussa_error(msg) {};
137 };
138 #endif