1//===-- ObjCPlusPlusLanguage.cpp --------------------------------------*- C++
2//-*-===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#include "ObjCPlusPlusLanguage.h"
11
12#include "lldb/Core/PluginManager.h"
13#include "lldb/Utility/ConstString.h"
14
15using namespace lldb;
16using namespace lldb_private;
17
18bool ObjCPlusPlusLanguage::IsSourceFile(llvm::StringRef file_path) const {
19  const auto suffixes = {".h", ".mm"};
20  for (auto suffix : suffixes) {
21    if (file_path.endswith_lower(suffix))
22      return true;
23  }
24  return false;
25}
26
27void ObjCPlusPlusLanguage::Initialize() {
28  PluginManager::RegisterPlugin(GetPluginNameStatic(), "Objective-C++ Language",
29                                CreateInstance);
30}
31
32void ObjCPlusPlusLanguage::Terminate() {
33  PluginManager::UnregisterPlugin(CreateInstance);
34}
35
36lldb_private::ConstString ObjCPlusPlusLanguage::GetPluginNameStatic() {
37  static ConstString g_name("objcplusplus");
38  return g_name;
39}
40
41// PluginInterface protocol
42lldb_private::ConstString ObjCPlusPlusLanguage::GetPluginName() {
43  return GetPluginNameStatic();
44}
45
46uint32_t ObjCPlusPlusLanguage::GetPluginVersion() { return 1; }
47
48// Static Functions
49Language *ObjCPlusPlusLanguage::CreateInstance(lldb::LanguageType language) {
50  switch (language) {
51  case lldb::eLanguageTypeObjC_plus_plus:
52    return new ObjCPlusPlusLanguage();
53  default:
54    return nullptr;
55  }
56}
57