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 
15 using namespace lldb;
16 using namespace lldb_private;
17 
18 bool 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 
27 void ObjCPlusPlusLanguage::Initialize() {
28   PluginManager::RegisterPlugin(GetPluginNameStatic(), "Objective-C++ Language",
29                                 CreateInstance);
30 }
31 
32 void ObjCPlusPlusLanguage::Terminate() {
33   PluginManager::UnregisterPlugin(CreateInstance);
34 }
35 
36 lldb_private::ConstString ObjCPlusPlusLanguage::GetPluginNameStatic() {
37   static ConstString g_name("objcplusplus");
38   return g_name;
39 }
40 
41 // PluginInterface protocol
42 lldb_private::ConstString ObjCPlusPlusLanguage::GetPluginName() {
43   return GetPluginNameStatic();
44 }
45 
46 uint32_t ObjCPlusPlusLanguage::GetPluginVersion() { return 1; }
47 
48 // Static Functions
49 Language *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