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

changeset 0
6474c204b198
     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_

mercurial