gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:3f34dbab27ff
1 //
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 #ifndef COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
8 #define COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
9
10 #include <string>
11
12 // Windows.h #defines ERROR.
13 #ifdef ERROR
14 #undef ERROR
15 #endif
16
17 namespace pp
18 {
19
20 struct SourceLocation;
21
22 // Base class for reporting diagnostic messages.
23 // Derived classes are responsible for formatting and printing the messages.
24 class Diagnostics
25 {
26 public:
27 enum Severity
28 {
29 ERROR,
30 WARNING
31 };
32 enum ID
33 {
34 ERROR_BEGIN,
35 INTERNAL_ERROR,
36 OUT_OF_MEMORY,
37 INVALID_CHARACTER,
38 INVALID_NUMBER,
39 INTEGER_OVERFLOW,
40 FLOAT_OVERFLOW,
41 TOKEN_TOO_LONG,
42 INVALID_EXPRESSION,
43 DIVISION_BY_ZERO,
44 EOF_IN_COMMENT,
45 UNEXPECTED_TOKEN,
46 DIRECTIVE_INVALID_NAME,
47 MACRO_NAME_RESERVED,
48 MACRO_REDEFINED,
49 MACRO_PREDEFINED_REDEFINED,
50 MACRO_PREDEFINED_UNDEFINED,
51 MACRO_UNTERMINATED_INVOCATION,
52 MACRO_TOO_FEW_ARGS,
53 MACRO_TOO_MANY_ARGS,
54 CONDITIONAL_ENDIF_WITHOUT_IF,
55 CONDITIONAL_ELSE_WITHOUT_IF,
56 CONDITIONAL_ELSE_AFTER_ELSE,
57 CONDITIONAL_ELIF_WITHOUT_IF,
58 CONDITIONAL_ELIF_AFTER_ELSE,
59 CONDITIONAL_UNTERMINATED,
60 INVALID_EXTENSION_NAME,
61 INVALID_EXTENSION_BEHAVIOR,
62 INVALID_EXTENSION_DIRECTIVE,
63 INVALID_VERSION_NUMBER,
64 INVALID_VERSION_DIRECTIVE,
65 VERSION_NOT_FIRST_STATEMENT,
66 INVALID_LINE_NUMBER,
67 INVALID_FILE_NUMBER,
68 INVALID_LINE_DIRECTIVE,
69 ERROR_END,
70
71 WARNING_BEGIN,
72 EOF_IN_DIRECTIVE,
73 CONDITIONAL_UNEXPECTED_TOKEN,
74 UNRECOGNIZED_PRAGMA,
75 WARNING_END
76 };
77
78 virtual ~Diagnostics();
79
80 void report(ID id, const SourceLocation& loc, const std::string& text);
81
82 protected:
83 Severity severity(ID id);
84 std::string message(ID id);
85
86 virtual void print(ID id,
87 const SourceLocation& loc,
88 const std::string& text) = 0;
89 };
90
91 } // namespace pp
92 #endif // COMPILER_PREPROCESSOR_DIAGNOSTICS_H_

mercurial