mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
ae65e281f3
to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
96 lines
3.5 KiB
C++
96 lines
3.5 KiB
C++
//===- llvm/Support/DiagnosticPrinter.h - Diagnostic Printer ----*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the main interface for printer backend diagnostic.
|
|
//
|
|
// Clients of the backend diagnostics should overload this interface based
|
|
// on their needs.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_IR_DIAGNOSTICPRINTER_H
|
|
#define LLVM_IR_DIAGNOSTICPRINTER_H
|
|
|
|
#include <string>
|
|
|
|
namespace llvm {
|
|
|
|
// Forward declarations.
|
|
class Module;
|
|
class raw_ostream;
|
|
class SMDiagnostic;
|
|
class StringRef;
|
|
class Twine;
|
|
class Value;
|
|
|
|
/// Interface for custom diagnostic printing.
|
|
class DiagnosticPrinter {
|
|
public:
|
|
virtual ~DiagnosticPrinter() = default;
|
|
|
|
// Simple types.
|
|
virtual DiagnosticPrinter &operator<<(char C) = 0;
|
|
virtual DiagnosticPrinter &operator<<(unsigned char C) = 0;
|
|
virtual DiagnosticPrinter &operator<<(signed char C) = 0;
|
|
virtual DiagnosticPrinter &operator<<(StringRef Str) = 0;
|
|
virtual DiagnosticPrinter &operator<<(const char *Str) = 0;
|
|
virtual DiagnosticPrinter &operator<<(const std::string &Str) = 0;
|
|
virtual DiagnosticPrinter &operator<<(unsigned long N) = 0;
|
|
virtual DiagnosticPrinter &operator<<(long N) = 0;
|
|
virtual DiagnosticPrinter &operator<<(unsigned long long N) = 0;
|
|
virtual DiagnosticPrinter &operator<<(long long N) = 0;
|
|
virtual DiagnosticPrinter &operator<<(const void *P) = 0;
|
|
virtual DiagnosticPrinter &operator<<(unsigned int N) = 0;
|
|
virtual DiagnosticPrinter &operator<<(int N) = 0;
|
|
virtual DiagnosticPrinter &operator<<(double N) = 0;
|
|
virtual DiagnosticPrinter &operator<<(const Twine &Str) = 0;
|
|
|
|
// IR related types.
|
|
virtual DiagnosticPrinter &operator<<(const Value &V) = 0;
|
|
virtual DiagnosticPrinter &operator<<(const Module &M) = 0;
|
|
|
|
// Other types.
|
|
virtual DiagnosticPrinter &operator<<(const SMDiagnostic &Diag) = 0;
|
|
};
|
|
|
|
/// Basic diagnostic printer that uses an underlying raw_ostream.
|
|
class DiagnosticPrinterRawOStream : public DiagnosticPrinter {
|
|
protected:
|
|
raw_ostream &Stream;
|
|
|
|
public:
|
|
DiagnosticPrinterRawOStream(raw_ostream &Stream) : Stream(Stream) {}
|
|
|
|
// Simple types.
|
|
DiagnosticPrinter &operator<<(char C) override;
|
|
DiagnosticPrinter &operator<<(unsigned char C) override;
|
|
DiagnosticPrinter &operator<<(signed char C) override;
|
|
DiagnosticPrinter &operator<<(StringRef Str) override;
|
|
DiagnosticPrinter &operator<<(const char *Str) override;
|
|
DiagnosticPrinter &operator<<(const std::string &Str) override;
|
|
DiagnosticPrinter &operator<<(unsigned long N) override;
|
|
DiagnosticPrinter &operator<<(long N) override;
|
|
DiagnosticPrinter &operator<<(unsigned long long N) override;
|
|
DiagnosticPrinter &operator<<(long long N) override;
|
|
DiagnosticPrinter &operator<<(const void *P) override;
|
|
DiagnosticPrinter &operator<<(unsigned int N) override;
|
|
DiagnosticPrinter &operator<<(int N) override;
|
|
DiagnosticPrinter &operator<<(double N) override;
|
|
DiagnosticPrinter &operator<<(const Twine &Str) override;
|
|
|
|
// IR related types.
|
|
DiagnosticPrinter &operator<<(const Value &V) override;
|
|
DiagnosticPrinter &operator<<(const Module &M) override;
|
|
|
|
// Other types.
|
|
DiagnosticPrinter &operator<<(const SMDiagnostic &Diag) override;
|
|
};
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif // LLVM_IR_DIAGNOSTICPRINTER_H
|