1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,92 @@ 1.4 +// 1.5 +// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 1.6 +// Use of this source code is governed by a BSD-style license that can be 1.7 +// found in the LICENSE file. 1.8 +// 1.9 + 1.10 +#ifndef COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ 1.11 +#define COMPILER_PREPROCESSOR_DIAGNOSTICS_H_ 1.12 + 1.13 +#include <string> 1.14 + 1.15 +// Windows.h #defines ERROR. 1.16 +#ifdef ERROR 1.17 +#undef ERROR 1.18 +#endif 1.19 + 1.20 +namespace pp 1.21 +{ 1.22 + 1.23 +struct SourceLocation; 1.24 + 1.25 +// Base class for reporting diagnostic messages. 1.26 +// Derived classes are responsible for formatting and printing the messages. 1.27 +class Diagnostics 1.28 +{ 1.29 + public: 1.30 + enum Severity 1.31 + { 1.32 + ERROR, 1.33 + WARNING 1.34 + }; 1.35 + enum ID 1.36 + { 1.37 + ERROR_BEGIN, 1.38 + INTERNAL_ERROR, 1.39 + OUT_OF_MEMORY, 1.40 + INVALID_CHARACTER, 1.41 + INVALID_NUMBER, 1.42 + INTEGER_OVERFLOW, 1.43 + FLOAT_OVERFLOW, 1.44 + TOKEN_TOO_LONG, 1.45 + INVALID_EXPRESSION, 1.46 + DIVISION_BY_ZERO, 1.47 + EOF_IN_COMMENT, 1.48 + UNEXPECTED_TOKEN, 1.49 + DIRECTIVE_INVALID_NAME, 1.50 + MACRO_NAME_RESERVED, 1.51 + MACRO_REDEFINED, 1.52 + MACRO_PREDEFINED_REDEFINED, 1.53 + MACRO_PREDEFINED_UNDEFINED, 1.54 + MACRO_UNTERMINATED_INVOCATION, 1.55 + MACRO_TOO_FEW_ARGS, 1.56 + MACRO_TOO_MANY_ARGS, 1.57 + CONDITIONAL_ENDIF_WITHOUT_IF, 1.58 + CONDITIONAL_ELSE_WITHOUT_IF, 1.59 + CONDITIONAL_ELSE_AFTER_ELSE, 1.60 + CONDITIONAL_ELIF_WITHOUT_IF, 1.61 + CONDITIONAL_ELIF_AFTER_ELSE, 1.62 + CONDITIONAL_UNTERMINATED, 1.63 + INVALID_EXTENSION_NAME, 1.64 + INVALID_EXTENSION_BEHAVIOR, 1.65 + INVALID_EXTENSION_DIRECTIVE, 1.66 + INVALID_VERSION_NUMBER, 1.67 + INVALID_VERSION_DIRECTIVE, 1.68 + VERSION_NOT_FIRST_STATEMENT, 1.69 + INVALID_LINE_NUMBER, 1.70 + INVALID_FILE_NUMBER, 1.71 + INVALID_LINE_DIRECTIVE, 1.72 + ERROR_END, 1.73 + 1.74 + WARNING_BEGIN, 1.75 + EOF_IN_DIRECTIVE, 1.76 + CONDITIONAL_UNEXPECTED_TOKEN, 1.77 + UNRECOGNIZED_PRAGMA, 1.78 + WARNING_END 1.79 + }; 1.80 + 1.81 + virtual ~Diagnostics(); 1.82 + 1.83 + void report(ID id, const SourceLocation& loc, const std::string& text); 1.84 + 1.85 + protected: 1.86 + Severity severity(ID id); 1.87 + std::string message(ID id); 1.88 + 1.89 + virtual void print(ID id, 1.90 + const SourceLocation& loc, 1.91 + const std::string& text) = 0; 1.92 +}; 1.93 + 1.94 +} // namespace pp 1.95 +#endif // COMPILER_PREPROCESSOR_DIAGNOSTICS_H_