]> AND Private Git Repository - blast.git/blob - Exception.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
finished VHDL gen. (but have to test further
[blast.git] / Exception.h
1 /*-==============================================================-
2
3 file : Exception.h
4
5 creation date : 08/04/2015
6
7 author : S. Domas (sdomas@iut-bm.univ-fcomte.fr)
8
9 description : 
10
11 supp. infos : saved in UTF-8 [éè]
12
13 -==============================================================-*/
14 #ifndef __EXCEPTION_H__
15 #define __EXCEPTION_H__
16
17 #include <iostream>
18 #include <fstream>
19
20 #include <QtCore>
21
22 // exceptions for file accesses
23 #define CONFIGFILE_NOACCESS 101
24 #define CONFIGFILE_CORRUPTED 102
25
26 #define PROJECTFILE_NOACCESS 201
27 #define PROJECTFILE_CORRUPTED 202
28 #define PROJECTPATH_NOACCESS 203
29
30 #define BLOCKFILE_NOACCESS 301
31 #define BLOCKFILE_CORRUPTED 302
32
33 #define IMPLFILE_NOACCESS 401
34 #define IMPLFILE_CORRUPTED 402
35 #define IMPLFILE_NOPATTERN 403
36
37 #define VHDLFILE_NOACCESS 501
38 #define VHDLFILE_CORRUPTED 502
39
40 #define BLOCKPATH_NOACCESS 601
41
42 #define IMPLPATH_NOACCESS 701
43
44 // exceptions for block manipulations
45 #define BLOCK_NULL 1001
46 #define BLOCK_INVALID_TYPE 1002
47
48
49 // exceptions for interfaces manipulations
50 #define IFACE_NULL 2001
51 #define IFACE_INVALID_TYPE 2002
52 #define IFACE_MULTIPLICITY_REACHED 2003
53 #define IFACE_BLOCK_NOCLKRST 2004
54 #define IFACE_GROUP_NOCLKRST 2005
55 #define IFACE_TOP_NOCLKRSTGEN 2006
56
57 // exceptions for block items manipulations
58 #define BLOCKITEM_NULL 3001
59 #define BLOCKITEM_INVALID_TYPE 3002
60
61 // exceptions for width interfaces validation
62 #define WIDTHS_NOT_EQUALS 4001
63
64 // exceptions for VHDL generation
65 #define INVALID_VALUE 5001
66
67 // exception for patterns
68 #define INVALID_REFBLOCK_USE 10001
69 #define INVALID_GROUPBLOCK_USE 10002
70 #define INVALID_DELTA_CP 10003 // delta and CP are not consistent (NB: used during admittance computation)
71
72 #define EVAL_PARAM_UNKNOWN 10101 // a variable used in an expression is not defined as a block parameter
73 #define EVAL_PARAM_NOVALUE 10102 // can't get the double value of a block parameter
74 #define EVAL_INVALID_EXPR 10103 // invalid arithmetic expression (in a block parameter/pattern)
75
76 #define INVALID_IFACE_PATTERN 10201 // the pattern of an interface is invalid (not correct grammar)
77 #define INVALID_IFACE_PC 10202 // the production counter of an interface is invalid (not correct grammar)
78
79 #define INVALID_IFACE_CP_LENGTH 10301 // the size of CP for an interface differs from others
80 #define NO_IFACE_CP 10302 // an interface has no CP defined in reference block
81
82 #define INVALID_IFACE_PP_LENGTH 10401 // the size of PP for an interface differs from others
83 #define NO_IFACE_PP 10402 // an interface has no PP defined in reference block
84
85 #define NO_IFACE_IP 10501 // an interface has no IP
86 #define IP_AP_NOTCOMPAT 10502 // IP and AP not compatible
87 #define IP_END_NULLCOL 10503 // IP ends with anull column (normally not possible during compat. check)
88 #define AP_TOO_SHORT 10504 // AP has been badly computed, leading to a AP shorter than needed (NB: it is an abnormal case)
89
90 #define IFACE_NOT_CONNECTED 10601 // an interface with control is not connected => impossible to analyz the graph
91
92 using namespace std;
93 using namespace Qt;
94
95 class Exception : public QObject {
96
97 public:
98
99   Exception(int _id, void* _source = NULL);
100   Exception(const Exception& other);
101
102   inline int getType() { return id; }
103   inline void setMessage(QString _message) { message = _message; }
104   inline QString getMessage() { return message; }
105   QString getDefaultMessage();
106   inline void* getSource() { return source; }
107
108 private:  
109   int id;
110   QString message;
111   void* source;
112
113 };
114
115 #endif //__EXCEPTION_H__