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