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