10fca6ea1SDimitry Andric //===-- SBSaveCoreOptions.cpp -----------------------------------*- C++ -*-===// 20fca6ea1SDimitry Andric // 30fca6ea1SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40fca6ea1SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50fca6ea1SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60fca6ea1SDimitry Andric // 70fca6ea1SDimitry Andric //===----------------------------------------------------------------------===// 80fca6ea1SDimitry Andric 90fca6ea1SDimitry Andric #include "lldb/API/SBSaveCoreOptions.h" 100fca6ea1SDimitry Andric #include "lldb/API/SBError.h" 110fca6ea1SDimitry Andric #include "lldb/API/SBFileSpec.h" 120fca6ea1SDimitry Andric #include "lldb/Host/FileSystem.h" 130fca6ea1SDimitry Andric #include "lldb/Symbol/SaveCoreOptions.h" 140fca6ea1SDimitry Andric #include "lldb/Utility/Instrumentation.h" 150fca6ea1SDimitry Andric 160fca6ea1SDimitry Andric #include "Utils.h" 170fca6ea1SDimitry Andric 180fca6ea1SDimitry Andric using namespace lldb; 190fca6ea1SDimitry Andric 200fca6ea1SDimitry Andric SBSaveCoreOptions::SBSaveCoreOptions() { 210fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this) 220fca6ea1SDimitry Andric 230fca6ea1SDimitry Andric m_opaque_up = std::make_unique<lldb_private::SaveCoreOptions>(); 240fca6ea1SDimitry Andric } 250fca6ea1SDimitry Andric 260fca6ea1SDimitry Andric SBSaveCoreOptions::SBSaveCoreOptions(const SBSaveCoreOptions &rhs) { 270fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this, rhs); 280fca6ea1SDimitry Andric 290fca6ea1SDimitry Andric m_opaque_up = clone(rhs.m_opaque_up); 300fca6ea1SDimitry Andric } 310fca6ea1SDimitry Andric 32*62987288SDimitry Andric SBSaveCoreOptions::~SBSaveCoreOptions() = default; 33*62987288SDimitry Andric 340fca6ea1SDimitry Andric const SBSaveCoreOptions & 350fca6ea1SDimitry Andric SBSaveCoreOptions::operator=(const SBSaveCoreOptions &rhs) { 360fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this, rhs); 370fca6ea1SDimitry Andric 380fca6ea1SDimitry Andric if (this != &rhs) 390fca6ea1SDimitry Andric m_opaque_up = clone(rhs.m_opaque_up); 400fca6ea1SDimitry Andric return *this; 410fca6ea1SDimitry Andric } 420fca6ea1SDimitry Andric 430fca6ea1SDimitry Andric SBError SBSaveCoreOptions::SetPluginName(const char *name) { 440fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this, name); 450fca6ea1SDimitry Andric lldb_private::Status error = m_opaque_up->SetPluginName(name); 460fca6ea1SDimitry Andric return SBError(error); 470fca6ea1SDimitry Andric } 480fca6ea1SDimitry Andric 490fca6ea1SDimitry Andric void SBSaveCoreOptions::SetStyle(lldb::SaveCoreStyle style) { 500fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this, style); 510fca6ea1SDimitry Andric m_opaque_up->SetStyle(style); 520fca6ea1SDimitry Andric } 530fca6ea1SDimitry Andric 540fca6ea1SDimitry Andric void SBSaveCoreOptions::SetOutputFile(lldb::SBFileSpec file_spec) { 550fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this, file_spec); 560fca6ea1SDimitry Andric m_opaque_up->SetOutputFile(file_spec.ref()); 570fca6ea1SDimitry Andric } 580fca6ea1SDimitry Andric 590fca6ea1SDimitry Andric const char *SBSaveCoreOptions::GetPluginName() const { 600fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this); 610fca6ea1SDimitry Andric const auto name = m_opaque_up->GetPluginName(); 620fca6ea1SDimitry Andric if (!name) 630fca6ea1SDimitry Andric return nullptr; 640fca6ea1SDimitry Andric return lldb_private::ConstString(name.value()).GetCString(); 650fca6ea1SDimitry Andric } 660fca6ea1SDimitry Andric 670fca6ea1SDimitry Andric SBFileSpec SBSaveCoreOptions::GetOutputFile() const { 680fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this); 690fca6ea1SDimitry Andric const auto file_spec = m_opaque_up->GetOutputFile(); 700fca6ea1SDimitry Andric if (file_spec) 710fca6ea1SDimitry Andric return SBFileSpec(file_spec.value()); 720fca6ea1SDimitry Andric return SBFileSpec(); 730fca6ea1SDimitry Andric } 740fca6ea1SDimitry Andric 750fca6ea1SDimitry Andric lldb::SaveCoreStyle SBSaveCoreOptions::GetStyle() const { 760fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this); 770fca6ea1SDimitry Andric return m_opaque_up->GetStyle(); 780fca6ea1SDimitry Andric } 790fca6ea1SDimitry Andric 800fca6ea1SDimitry Andric void SBSaveCoreOptions::Clear() { 810fca6ea1SDimitry Andric LLDB_INSTRUMENT_VA(this); 820fca6ea1SDimitry Andric m_opaque_up->Clear(); 830fca6ea1SDimitry Andric } 840fca6ea1SDimitry Andric 850fca6ea1SDimitry Andric lldb_private::SaveCoreOptions &SBSaveCoreOptions::ref() const { 860fca6ea1SDimitry Andric return *m_opaque_up.get(); 870fca6ea1SDimitry Andric } 88