blob: 6f801d02d333bb85f44fb32a408a90cc49a74be7 [file] [log] [blame]
Eugene Zelenko8d15f332015-10-20 01:10:59 +00001//===-- ObjCPlusPlusLanguage.h ----------------------------------*- C++ -*-===//
Enrico Granata5f9d3102015-08-27 21:33:50 +00002//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Enrico Granata5f9d3102015-08-27 21:33:50 +00006//
7//===----------------------------------------------------------------------===//
8
9#ifndef liblldb_ObjCPlusPlusLanguage_h_
10#define liblldb_ObjCPlusPlusLanguage_h_
11
Raphael Isemann566afa02018-08-02 00:30:15 +000012#include "Plugins/Language/ClangCommon/ClangHighlighter.h"
Enrico Granata5f9d3102015-08-27 21:33:50 +000013#include "lldb/Target/Language.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000014#include "lldb/lldb-private.h"
Enrico Granata5f9d3102015-08-27 21:33:50 +000015
16namespace lldb_private {
Kate Stoneb9c1b512016-09-06 20:57:50 +000017
18class ObjCPlusPlusLanguage : public Language {
Raphael Isemann566afa02018-08-02 00:30:15 +000019 ClangHighlighter m_highlighter;
20
Enrico Granata5f9d3102015-08-27 21:33:50 +000021public:
Kate Stoneb9c1b512016-09-06 20:57:50 +000022 ObjCPlusPlusLanguage() = default;
Eugene Zelenko8d15f332015-10-20 01:10:59 +000023
Kate Stoneb9c1b512016-09-06 20:57:50 +000024 ~ObjCPlusPlusLanguage() override = default;
Eugene Zelenko8d15f332015-10-20 01:10:59 +000025
Kate Stoneb9c1b512016-09-06 20:57:50 +000026 lldb::LanguageType GetLanguageType() const override {
27 return lldb::eLanguageTypeObjC_plus_plus;
28 }
29
Raphael Isemann566afa02018-08-02 00:30:15 +000030 bool IsSourceFile(llvm::StringRef file_path) const override;
31
32 const Highlighter *GetHighlighter() const override { return &m_highlighter; }
33
Kate Stoneb9c1b512016-09-06 20:57:50 +000034 //------------------------------------------------------------------
35 // Static Functions
36 //------------------------------------------------------------------
37 static void Initialize();
38
39 static void Terminate();
40
41 static lldb_private::Language *CreateInstance(lldb::LanguageType language);
42
43 static lldb_private::ConstString GetPluginNameStatic();
44
45 //------------------------------------------------------------------
46 // PluginInterface protocol
47 //------------------------------------------------------------------
48 ConstString GetPluginName() override;
49
50 uint32_t GetPluginVersion() override;
Enrico Granata5f9d3102015-08-27 21:33:50 +000051};
Kate Stoneb9c1b512016-09-06 20:57:50 +000052
Enrico Granata5f9d3102015-08-27 21:33:50 +000053} // namespace lldb_private
54
Eugene Zelenko8d15f332015-10-20 01:10:59 +000055#endif // liblldb_CPlusPlusLanguage_h_