1 //===-- ObjCPlusPlusLanguage.cpp --------------------------------------*- C++ 2 //-*-===// 3 // 4 // The LLVM Compiler Infrastructure 5 // 6 // This file is distributed under the University of Illinois Open Source 7 // License. See LICENSE.TXT for details. 8 // 9 //===----------------------------------------------------------------------===// 10 11 #include "ObjCPlusPlusLanguage.h" 12 13 #include "lldb/Core/PluginManager.h" 14 #include "lldb/Utility/ConstString.h" 15 16 using namespace lldb; 17 using namespace lldb_private; 18 19 bool ObjCPlusPlusLanguage::IsSourceFile(llvm::StringRef file_path) const { 20 const auto suffixes = {".h", ".mm"}; 21 for (auto suffix : suffixes) { 22 if (file_path.endswith_lower(suffix)) 23 return true; 24 } 25 return false; 26 } 27 28 void ObjCPlusPlusLanguage::Initialize() { 29 PluginManager::RegisterPlugin(GetPluginNameStatic(), "Objective-C++ Language", 30 CreateInstance); 31 } 32 33 void ObjCPlusPlusLanguage::Terminate() { 34 PluginManager::UnregisterPlugin(CreateInstance); 35 } 36 37 lldb_private::ConstString ObjCPlusPlusLanguage::GetPluginNameStatic() { 38 static ConstString g_name("objcplusplus"); 39 return g_name; 40 } 41 42 //------------------------------------------------------------------ 43 // PluginInterface protocol 44 //------------------------------------------------------------------ 45 lldb_private::ConstString ObjCPlusPlusLanguage::GetPluginName() { 46 return GetPluginNameStatic(); 47 } 48 49 uint32_t ObjCPlusPlusLanguage::GetPluginVersion() { return 1; } 50 51 //------------------------------------------------------------------ 52 // Static Functions 53 //------------------------------------------------------------------ 54 Language *ObjCPlusPlusLanguage::CreateInstance(lldb::LanguageType language) { 55 switch (language) { 56 case lldb::eLanguageTypeObjC_plus_plus: 57 return new ObjCPlusPlusLanguage(); 58 default: 59 return nullptr; 60 } 61 } 62