brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · faa0dd0 Raw
54 lines · cpp
1//===-- ObjCPlusPlusLanguage.cpp ------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "ObjCPlusPlusLanguage.h"10 11#include "lldb/Core/PluginManager.h"12#include "lldb/Utility/ConstString.h"13 14using namespace lldb;15using namespace lldb_private;16 17LLDB_PLUGIN_DEFINE(ObjCPlusPlusLanguage)18 19bool ObjCPlusPlusLanguage::IsSourceFile(llvm::StringRef file_path) const {20  const auto suffixes = {".h", ".mm"};21  for (auto suffix : suffixes) {22    if (file_path.ends_with_insensitive(suffix))23      return true;24  }25  return false;26}27 28void ObjCPlusPlusLanguage::Initialize() {29  PluginManager::RegisterPlugin(GetPluginNameStatic(), "Objective-C++ Language",30                                CreateInstance);31}32 33void ObjCPlusPlusLanguage::Terminate() {34  PluginManager::UnregisterPlugin(CreateInstance);35}36 37// Static Functions38Language *ObjCPlusPlusLanguage::CreateInstance(lldb::LanguageType language) {39  switch (language) {40  case lldb::eLanguageTypeObjC_plus_plus:41    return new ObjCPlusPlusLanguage();42  default:43    return nullptr;44  }45}46 47std::optional<bool>48ObjCPlusPlusLanguage::GetBooleanFromString(llvm::StringRef str) const {49  return llvm::StringSwitch<std::optional<bool>>(str)50      .Cases({"true", "YES"}, {true})51      .Cases({"false", "NO"}, {false})52      .Default({});53}54