1ac9a064cSDimitry Andric //===-- SBSaveCoreOptions.cpp -----------------------------------*- C++ -*-===// 2ac9a064cSDimitry Andric // 3ac9a064cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4ac9a064cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5ac9a064cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6ac9a064cSDimitry Andric // 7ac9a064cSDimitry Andric //===----------------------------------------------------------------------===// 8ac9a064cSDimitry Andric 9ac9a064cSDimitry Andric #include "lldb/API/SBSaveCoreOptions.h" 10ac9a064cSDimitry Andric #include "lldb/API/SBError.h" 11ac9a064cSDimitry Andric #include "lldb/API/SBFileSpec.h" 12ac9a064cSDimitry Andric #include "lldb/Host/FileSystem.h" 13ac9a064cSDimitry Andric #include "lldb/Symbol/SaveCoreOptions.h" 14ac9a064cSDimitry Andric #include "lldb/Utility/Instrumentation.h" 15ac9a064cSDimitry Andric 16ac9a064cSDimitry Andric #include "Utils.h" 17ac9a064cSDimitry Andric 18ac9a064cSDimitry Andric using namespace lldb; 19ac9a064cSDimitry Andric SBSaveCoreOptions()20ac9a064cSDimitry AndricSBSaveCoreOptions::SBSaveCoreOptions() { 21ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this) 22ac9a064cSDimitry Andric 23ac9a064cSDimitry Andric m_opaque_up = std::make_unique<lldb_private::SaveCoreOptions>(); 24ac9a064cSDimitry Andric } 25ac9a064cSDimitry Andric SBSaveCoreOptions(const SBSaveCoreOptions & rhs)26ac9a064cSDimitry AndricSBSaveCoreOptions::SBSaveCoreOptions(const SBSaveCoreOptions &rhs) { 27ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this, rhs); 28ac9a064cSDimitry Andric 29ac9a064cSDimitry Andric m_opaque_up = clone(rhs.m_opaque_up); 30ac9a064cSDimitry Andric } 31ac9a064cSDimitry Andric 32adf62863SDimitry Andric SBSaveCoreOptions::~SBSaveCoreOptions() = default; 33adf62863SDimitry Andric 34ac9a064cSDimitry Andric const SBSaveCoreOptions & operator =(const SBSaveCoreOptions & rhs)35ac9a064cSDimitry AndricSBSaveCoreOptions::operator=(const SBSaveCoreOptions &rhs) { 36ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this, rhs); 37ac9a064cSDimitry Andric 38ac9a064cSDimitry Andric if (this != &rhs) 39ac9a064cSDimitry Andric m_opaque_up = clone(rhs.m_opaque_up); 40ac9a064cSDimitry Andric return *this; 41ac9a064cSDimitry Andric } 42ac9a064cSDimitry Andric SetPluginName(const char * name)43ac9a064cSDimitry AndricSBError SBSaveCoreOptions::SetPluginName(const char *name) { 44ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this, name); 45ac9a064cSDimitry Andric lldb_private::Status error = m_opaque_up->SetPluginName(name); 46ac9a064cSDimitry Andric return SBError(error); 47ac9a064cSDimitry Andric } 48ac9a064cSDimitry Andric SetStyle(lldb::SaveCoreStyle style)49ac9a064cSDimitry Andricvoid SBSaveCoreOptions::SetStyle(lldb::SaveCoreStyle style) { 50ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this, style); 51ac9a064cSDimitry Andric m_opaque_up->SetStyle(style); 52ac9a064cSDimitry Andric } 53ac9a064cSDimitry Andric SetOutputFile(lldb::SBFileSpec file_spec)54ac9a064cSDimitry Andricvoid SBSaveCoreOptions::SetOutputFile(lldb::SBFileSpec file_spec) { 55ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this, file_spec); 56ac9a064cSDimitry Andric m_opaque_up->SetOutputFile(file_spec.ref()); 57ac9a064cSDimitry Andric } 58ac9a064cSDimitry Andric GetPluginName() const59ac9a064cSDimitry Andricconst char *SBSaveCoreOptions::GetPluginName() const { 60ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this); 61ac9a064cSDimitry Andric const auto name = m_opaque_up->GetPluginName(); 62ac9a064cSDimitry Andric if (!name) 63ac9a064cSDimitry Andric return nullptr; 64ac9a064cSDimitry Andric return lldb_private::ConstString(name.value()).GetCString(); 65ac9a064cSDimitry Andric } 66ac9a064cSDimitry Andric GetOutputFile() const67ac9a064cSDimitry AndricSBFileSpec SBSaveCoreOptions::GetOutputFile() const { 68ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this); 69ac9a064cSDimitry Andric const auto file_spec = m_opaque_up->GetOutputFile(); 70ac9a064cSDimitry Andric if (file_spec) 71ac9a064cSDimitry Andric return SBFileSpec(file_spec.value()); 72ac9a064cSDimitry Andric return SBFileSpec(); 73ac9a064cSDimitry Andric } 74ac9a064cSDimitry Andric GetStyle() const75ac9a064cSDimitry Andriclldb::SaveCoreStyle SBSaveCoreOptions::GetStyle() const { 76ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this); 77ac9a064cSDimitry Andric return m_opaque_up->GetStyle(); 78ac9a064cSDimitry Andric } 79ac9a064cSDimitry Andric Clear()80ac9a064cSDimitry Andricvoid SBSaveCoreOptions::Clear() { 81ac9a064cSDimitry Andric LLDB_INSTRUMENT_VA(this); 82ac9a064cSDimitry Andric m_opaque_up->Clear(); 83ac9a064cSDimitry Andric } 84ac9a064cSDimitry Andric ref() const85ac9a064cSDimitry Andriclldb_private::SaveCoreOptions &SBSaveCoreOptions::ref() const { 86ac9a064cSDimitry Andric return *m_opaque_up.get(); 87ac9a064cSDimitry Andric } 88