15ffd83dbSDimitry Andric //===-- SBLanguageRuntime.cpp ---------------------------------------------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "lldb/API/SBLanguageRuntime.h" 100b57cec5SDimitry Andric #include "lldb/Target/Language.h" 1104eeddc0SDimitry Andric #include "lldb/Utility/Instrumentation.h" 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric using namespace lldb; 140b57cec5SDimitry Andric using namespace lldb_private; 150b57cec5SDimitry Andric 160b57cec5SDimitry Andric lldb::LanguageType 170b57cec5SDimitry Andric SBLanguageRuntime::GetLanguageTypeFromString(const char *string) { 1804eeddc0SDimitry Andric LLDB_INSTRUMENT_VA(string); 190b57cec5SDimitry Andric 20fe6060f1SDimitry Andric return Language::GetLanguageTypeFromString(llvm::StringRef(string)); 210b57cec5SDimitry Andric } 220b57cec5SDimitry Andric 230b57cec5SDimitry Andric const char * 240b57cec5SDimitry Andric SBLanguageRuntime::GetNameForLanguageType(lldb::LanguageType language) { 2504eeddc0SDimitry Andric LLDB_INSTRUMENT_VA(language); 260b57cec5SDimitry Andric 270b57cec5SDimitry Andric return Language::GetNameForLanguageType(language); 280b57cec5SDimitry Andric } 29*0fca6ea1SDimitry Andric 30*0fca6ea1SDimitry Andric bool SBLanguageRuntime::LanguageIsCPlusPlus(lldb::LanguageType language) { 31*0fca6ea1SDimitry Andric return Language::LanguageIsCPlusPlus(language); 32*0fca6ea1SDimitry Andric } 33*0fca6ea1SDimitry Andric 34*0fca6ea1SDimitry Andric bool SBLanguageRuntime::LanguageIsObjC(lldb::LanguageType language) { 35*0fca6ea1SDimitry Andric return Language::LanguageIsObjC(language); 36*0fca6ea1SDimitry Andric } 37*0fca6ea1SDimitry Andric 38*0fca6ea1SDimitry Andric bool SBLanguageRuntime::LanguageIsCFamily(lldb::LanguageType language) { 39*0fca6ea1SDimitry Andric return Language::LanguageIsCFamily(language); 40*0fca6ea1SDimitry Andric } 41*0fca6ea1SDimitry Andric 42*0fca6ea1SDimitry Andric bool SBLanguageRuntime::SupportsExceptionBreakpointsOnThrow( 43*0fca6ea1SDimitry Andric lldb::LanguageType language) { 44*0fca6ea1SDimitry Andric if (Language *lang_plugin = Language::FindPlugin(language)) 45*0fca6ea1SDimitry Andric return lang_plugin->SupportsExceptionBreakpointsOnThrow(); 46*0fca6ea1SDimitry Andric return false; 47*0fca6ea1SDimitry Andric } 48*0fca6ea1SDimitry Andric 49*0fca6ea1SDimitry Andric bool SBLanguageRuntime::SupportsExceptionBreakpointsOnCatch( 50*0fca6ea1SDimitry Andric lldb::LanguageType language) { 51*0fca6ea1SDimitry Andric if (Language *lang_plugin = Language::FindPlugin(language)) 52*0fca6ea1SDimitry Andric return lang_plugin->SupportsExceptionBreakpointsOnCatch(); 53*0fca6ea1SDimitry Andric return false; 54*0fca6ea1SDimitry Andric } 55*0fca6ea1SDimitry Andric 56*0fca6ea1SDimitry Andric const char * 57*0fca6ea1SDimitry Andric SBLanguageRuntime::GetThrowKeywordForLanguage(lldb::LanguageType language) { 58*0fca6ea1SDimitry Andric if (Language *lang_plugin = Language::FindPlugin(language)) 59*0fca6ea1SDimitry Andric return ConstString(lang_plugin->GetThrowKeyword()).AsCString(); 60*0fca6ea1SDimitry Andric return nullptr; 61*0fca6ea1SDimitry Andric } 62*0fca6ea1SDimitry Andric 63*0fca6ea1SDimitry Andric const char * 64*0fca6ea1SDimitry Andric SBLanguageRuntime::GetCatchKeywordForLanguage(lldb::LanguageType language) { 65*0fca6ea1SDimitry Andric if (Language *lang_plugin = Language::FindPlugin(language)) 66*0fca6ea1SDimitry Andric return ConstString(lang_plugin->GetCatchKeyword()).AsCString(); 67*0fca6ea1SDimitry Andric return nullptr; 68*0fca6ea1SDimitry Andric } 69