180814287SRaphael Isemann //===-- ObjCPlusPlusLanguage.cpp ------------------------------------------===// 25f9d3106SEnrico Granata // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65f9d3106SEnrico Granata // 75f9d3106SEnrico Granata //===----------------------------------------------------------------------===// 85f9d3106SEnrico Granata 95f9d3106SEnrico Granata #include "ObjCPlusPlusLanguage.h" 105f9d3106SEnrico Granata 115f9d3106SEnrico Granata #include "lldb/Core/PluginManager.h" 12bf9a7730SZachary Turner #include "lldb/Utility/ConstString.h" 135f9d3106SEnrico Granata 145f9d3106SEnrico Granata using namespace lldb; 155f9d3106SEnrico Granata using namespace lldb_private; 165f9d3106SEnrico Granata LLDB_PLUGIN_DEFINE(ObjCPlusPlusLanguage)17bba9ba8dSJonas DevlieghereLLDB_PLUGIN_DEFINE(ObjCPlusPlusLanguage) 18fbb4d1e4SJonas Devlieghere 19566afa0aSRaphael Isemann bool ObjCPlusPlusLanguage::IsSourceFile(llvm::StringRef file_path) const { 20566afa0aSRaphael Isemann const auto suffixes = {".h", ".mm"}; 21566afa0aSRaphael Isemann for (auto suffix : suffixes) { 22*e50f9c41SMartin Storsjö if (file_path.endswith_insensitive(suffix)) 23566afa0aSRaphael Isemann return true; 24566afa0aSRaphael Isemann } 25566afa0aSRaphael Isemann return false; 26566afa0aSRaphael Isemann } 27566afa0aSRaphael Isemann Initialize()28b9c1b51eSKate Stonevoid ObjCPlusPlusLanguage::Initialize() { 29b9c1b51eSKate Stone PluginManager::RegisterPlugin(GetPluginNameStatic(), "Objective-C++ Language", 305f9d3106SEnrico Granata CreateInstance); 315f9d3106SEnrico Granata } 325f9d3106SEnrico Granata Terminate()33b9c1b51eSKate Stonevoid ObjCPlusPlusLanguage::Terminate() { 345f9d3106SEnrico Granata PluginManager::UnregisterPlugin(CreateInstance); 355f9d3106SEnrico Granata } 365f9d3106SEnrico Granata 375f9d3106SEnrico Granata // Static Functions CreateInstance(lldb::LanguageType language)38b9c1b51eSKate StoneLanguage *ObjCPlusPlusLanguage::CreateInstance(lldb::LanguageType language) { 39b9c1b51eSKate Stone switch (language) { 405f9d3106SEnrico Granata case lldb::eLanguageTypeObjC_plus_plus: 415f9d3106SEnrico Granata return new ObjCPlusPlusLanguage(); 425f9d3106SEnrico Granata default: 435f9d3106SEnrico Granata return nullptr; 445f9d3106SEnrico Granata } 455f9d3106SEnrico Granata } 46