xref: /freebsd-src/contrib/llvm-project/lldb/source/API/SBLanguageRuntime.cpp (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
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