Path: blob/main_old/src/compiler/preprocessor/DiagnosticsBase.h
1693 views
//1// Copyright 2012 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//56#ifndef COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_7#define COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_89#include <string>1011namespace angle12{1314namespace pp15{1617struct SourceLocation;1819// Base class for reporting diagnostic messages.20// Derived classes are responsible for formatting and printing the messages.21class Diagnostics22{23public:24enum ID25{26PP_ERROR_BEGIN,27PP_INTERNAL_ERROR,28PP_OUT_OF_MEMORY,29PP_INVALID_CHARACTER,30PP_INVALID_NUMBER,31PP_INTEGER_OVERFLOW,32PP_FLOAT_OVERFLOW,33PP_TOKEN_TOO_LONG,34PP_INVALID_EXPRESSION,35PP_DIVISION_BY_ZERO,36PP_EOF_IN_COMMENT,37PP_UNEXPECTED_TOKEN,38PP_DIRECTIVE_INVALID_NAME,39PP_MACRO_NAME_RESERVED,40PP_MACRO_REDEFINED,41PP_MACRO_PREDEFINED_REDEFINED,42PP_MACRO_PREDEFINED_UNDEFINED,43PP_MACRO_UNTERMINATED_INVOCATION,44PP_MACRO_UNDEFINED_WHILE_INVOKED,45PP_MACRO_TOO_FEW_ARGS,46PP_MACRO_TOO_MANY_ARGS,47PP_MACRO_DUPLICATE_PARAMETER_NAMES,48PP_MACRO_INVOCATION_CHAIN_TOO_DEEP,49PP_CONDITIONAL_ENDIF_WITHOUT_IF,50PP_CONDITIONAL_ELSE_WITHOUT_IF,51PP_CONDITIONAL_ELSE_AFTER_ELSE,52PP_CONDITIONAL_ELIF_WITHOUT_IF,53PP_CONDITIONAL_ELIF_AFTER_ELSE,54PP_CONDITIONAL_UNTERMINATED,55PP_CONDITIONAL_UNEXPECTED_TOKEN,56PP_INVALID_EXTENSION_NAME,57PP_INVALID_EXTENSION_BEHAVIOR,58PP_INVALID_EXTENSION_DIRECTIVE,59PP_INVALID_VERSION_NUMBER,60PP_INVALID_VERSION_DIRECTIVE,61PP_VERSION_NOT_FIRST_STATEMENT,62PP_VERSION_NOT_FIRST_LINE_ESSL3,63PP_INVALID_LINE_NUMBER,64PP_INVALID_FILE_NUMBER,65PP_INVALID_LINE_DIRECTIVE,66// This is just a warning on CHROME OS http://anglebug.com/402367#if !defined(ANGLE_PLATFORM_CHROMEOS)68PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1,69#endif70PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL3,71PP_UNDEFINED_SHIFT,72PP_TOKENIZER_ERROR,73PP_ERROR_END,7475PP_WARNING_BEGIN,76PP_EOF_IN_DIRECTIVE,77PP_UNRECOGNIZED_PRAGMA,78#if defined(ANGLE_PLATFORM_CHROMEOS)79PP_NON_PP_TOKEN_BEFORE_EXTENSION_ESSL1,80#endif81PP_NON_PP_TOKEN_BEFORE_EXTENSION_WEBGL,82PP_WARNING_MACRO_NAME_RESERVED,83PP_WARNING_END84};8586virtual ~Diagnostics();8788void report(ID id, const SourceLocation &loc, const std::string &text);8990protected:91bool isError(ID id);92const char *message(ID id);9394virtual void print(ID id, const SourceLocation &loc, const std::string &text) = 0;95};9697} // namespace pp9899} // namespace angle100101#endif // COMPILER_PREPROCESSOR_DIAGNOSTICSBASE_H_102103104