1292932Sdim//===-- ObjCPlusPlusLanguage.h ----------------------------------*- C++ -*-===//
2292932Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6292932Sdim//
7292932Sdim//===----------------------------------------------------------------------===//
8292932Sdim
9292932Sdim#ifndef liblldb_ObjCPlusPlusLanguage_h_
10292932Sdim#define liblldb_ObjCPlusPlusLanguage_h_
11292932Sdim
12344779Sdim#include "Plugins/Language/ClangCommon/ClangHighlighter.h"
13314564Sdim#include "lldb/Target/Language.h"
14292932Sdim#include "lldb/lldb-private.h"
15292932Sdim
16292932Sdimnamespace lldb_private {
17314564Sdim
18314564Sdimclass ObjCPlusPlusLanguage : public Language {
19344779Sdim  ClangHighlighter m_highlighter;
20344779Sdim
21292932Sdimpublic:
22314564Sdim  ObjCPlusPlusLanguage() = default;
23292932Sdim
24314564Sdim  ~ObjCPlusPlusLanguage() override = default;
25292932Sdim
26314564Sdim  lldb::LanguageType GetLanguageType() const override {
27314564Sdim    return lldb::eLanguageTypeObjC_plus_plus;
28314564Sdim  }
29314564Sdim
30344779Sdim  bool IsSourceFile(llvm::StringRef file_path) const override;
31344779Sdim
32344779Sdim  const Highlighter *GetHighlighter() const override { return &m_highlighter; }
33344779Sdim
34314564Sdim  // Static Functions
35314564Sdim  static void Initialize();
36314564Sdim
37314564Sdim  static void Terminate();
38314564Sdim
39314564Sdim  static lldb_private::Language *CreateInstance(lldb::LanguageType language);
40314564Sdim
41314564Sdim  static lldb_private::ConstString GetPluginNameStatic();
42314564Sdim
43314564Sdim  // PluginInterface protocol
44314564Sdim  ConstString GetPluginName() override;
45314564Sdim
46314564Sdim  uint32_t GetPluginVersion() override;
47292932Sdim};
48314564Sdim
49292932Sdim} // namespace lldb_private
50292932Sdim
51292932Sdim#endif // liblldb_CPlusPlusLanguage_h_
52