summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/Logger.h
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2017-09-20 07:24:15 +0000
committerIlya Biryukov <ibiryukov@google.com>2017-09-20 07:24:15 +0000
commite5128f7e9141d41ea8dea0cb0736bc7ceb666ff2 (patch)
tree7602447f8bceae215cffed4ba126b809129c0ce4 /clang-tools-extra/clangd/Logger.h
parent405e2dbf3767586ab06a8506a6f5754aeb5a613d (diff)
downloadbcm5719-llvm-e5128f7e9141d41ea8dea0cb0736bc7ceb666ff2.tar.gz
bcm5719-llvm-e5128f7e9141d41ea8dea0cb0736bc7ceb666ff2.zip
[clangd] Introduced Logger interface.
Summary: This fixes a bunch of logging-related FIXMEs. Reviewers: bkramer, krasimir, malaperle Reviewed By: malaperle Subscribers: malaperle, klimek, cfe-commits, mgorny Differential Revision: https://reviews.llvm.org/D37972 llvm-svn: 313730
Diffstat (limited to 'clang-tools-extra/clangd/Logger.h')
-rw-r--r--clang-tools-extra/clangd/Logger.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/Logger.h b/clang-tools-extra/clangd/Logger.h
new file mode 100644
index 00000000000..7cf05561433
--- /dev/null
+++ b/clang-tools-extra/clangd/Logger.h
@@ -0,0 +1,41 @@
+//===--- Logger.h - Logger interface for clangd ------------------*- C++-*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_LOGGER_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_LOGGER_H
+
+#include "llvm/ADT/Twine.h"
+
+namespace clang {
+namespace clangd {
+
+/// Interface to allow custom logging in clangd.
+class Logger {
+public:
+ virtual ~Logger() = default;
+
+ /// Implementations of this method must be thread-safe.
+ virtual void log(const llvm::Twine &Message) = 0;
+};
+
+/// Logger implementation that ignores all messages.
+class EmptyLogger : public Logger {
+public:
+ static EmptyLogger &getInstance();
+
+ void log(const llvm::Twine &Message) override;
+
+private:
+ EmptyLogger() = default;
+};
+
+} // namespace clangd
+} // namespace clang
+
+#endif
OpenPOWER on IntegriCloud