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

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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 //
     7 #ifndef COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
     8 #define COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
    10 #include <string>
    12 // Windows.h #defines ERROR.
    13 #ifdef ERROR
    14 #undef ERROR
    15 #endif
    17 namespace pp
    18 {
    20 struct SourceLocation;
    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,
    71         WARNING_BEGIN,
    72         EOF_IN_DIRECTIVE,
    73         CONDITIONAL_UNEXPECTED_TOKEN,
    74         UNRECOGNIZED_PRAGMA,
    75         WARNING_END
    76     };
    78     virtual ~Diagnostics();
    80     void report(ID id, const SourceLocation& loc, const std::string& text);
    82   protected:
    83     Severity severity(ID id);
    84     std::string message(ID id);
    86     virtual void print(ID id,
    87                        const SourceLocation& loc,
    88                        const std::string& text) = 0;
    89 };
    91 }  // namespace pp
    92 #endif  // COMPILER_PREPROCESSOR_DIAGNOSTICS_H_

mercurial