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