1//===-- ObjCPlusPlusLanguage.h ----------------------------------*- C++ -*-===//
2//
3// 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
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef liblldb_ObjCPlusPlusLanguage_h_
10#define liblldb_ObjCPlusPlusLanguage_h_
11
12#include "Plugins/Language/ClangCommon/ClangHighlighter.h"
13#include "lldb/Target/Language.h"
14#include "lldb/lldb-private.h"
15
16namespace lldb_private {
17
18class ObjCPlusPlusLanguage : public Language {
19  ClangHighlighter m_highlighter;
20
21public:
22  ObjCPlusPlusLanguage() = default;
23
24  ~ObjCPlusPlusLanguage() override = default;
25
26  lldb::LanguageType GetLanguageType() const override {
27    return lldb::eLanguageTypeObjC_plus_plus;
28  }
29
30  bool IsSourceFile(llvm::StringRef file_path) const override;
31
32  const Highlighter *GetHighlighter() const override { return &m_highlighter; }
33
34  // Static Functions
35  static void Initialize();
36
37  static void Terminate();
38
39  static lldb_private::Language *CreateInstance(lldb::LanguageType language);
40
41  static lldb_private::ConstString GetPluginNameStatic();
42
43  // PluginInterface protocol
44  ConstString GetPluginName() override;
45
46  uint32_t GetPluginVersion() override;
47};
48
49} // namespace lldb_private
50
51#endif // liblldb_CPlusPlusLanguage_h_
52