xref: /freebsd/contrib/llvm-project/lldb/source/API/SBSaveCoreOptions.cpp (revision b64c5a0ace59af62eff52bfe110a521dc73c937b)
1 //===-- SBSaveCoreOptions.cpp -----------------------------------*- C++ -*-===//
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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "lldb/API/SBSaveCoreOptions.h"
10 #include "lldb/API/SBError.h"
11 #include "lldb/API/SBFileSpec.h"
12 #include "lldb/Host/FileSystem.h"
13 #include "lldb/Symbol/SaveCoreOptions.h"
14 #include "lldb/Utility/Instrumentation.h"
15 
16 #include "Utils.h"
17 
18 using namespace lldb;
19 
20 SBSaveCoreOptions::SBSaveCoreOptions() {
21   LLDB_INSTRUMENT_VA(this)
22 
23   m_opaque_up = std::make_unique<lldb_private::SaveCoreOptions>();
24 }
25 
26 SBSaveCoreOptions::SBSaveCoreOptions(const SBSaveCoreOptions &rhs) {
27   LLDB_INSTRUMENT_VA(this, rhs);
28 
29   m_opaque_up = clone(rhs.m_opaque_up);
30 }
31 
32 SBSaveCoreOptions::~SBSaveCoreOptions() = default;
33 
34 const SBSaveCoreOptions &
35 SBSaveCoreOptions::operator=(const SBSaveCoreOptions &rhs) {
36   LLDB_INSTRUMENT_VA(this, rhs);
37 
38   if (this != &rhs)
39     m_opaque_up = clone(rhs.m_opaque_up);
40   return *this;
41 }
42 
43 SBError SBSaveCoreOptions::SetPluginName(const char *name) {
44   LLDB_INSTRUMENT_VA(this, name);
45   lldb_private::Status error = m_opaque_up->SetPluginName(name);
46   return SBError(error);
47 }
48 
49 void SBSaveCoreOptions::SetStyle(lldb::SaveCoreStyle style) {
50   LLDB_INSTRUMENT_VA(this, style);
51   m_opaque_up->SetStyle(style);
52 }
53 
54 void SBSaveCoreOptions::SetOutputFile(lldb::SBFileSpec file_spec) {
55   LLDB_INSTRUMENT_VA(this, file_spec);
56   m_opaque_up->SetOutputFile(file_spec.ref());
57 }
58 
59 const char *SBSaveCoreOptions::GetPluginName() const {
60   LLDB_INSTRUMENT_VA(this);
61   const auto name = m_opaque_up->GetPluginName();
62   if (!name)
63     return nullptr;
64   return lldb_private::ConstString(name.value()).GetCString();
65 }
66 
67 SBFileSpec SBSaveCoreOptions::GetOutputFile() const {
68   LLDB_INSTRUMENT_VA(this);
69   const auto file_spec = m_opaque_up->GetOutputFile();
70   if (file_spec)
71     return SBFileSpec(file_spec.value());
72   return SBFileSpec();
73 }
74 
75 lldb::SaveCoreStyle SBSaveCoreOptions::GetStyle() const {
76   LLDB_INSTRUMENT_VA(this);
77   return m_opaque_up->GetStyle();
78 }
79 
80 void SBSaveCoreOptions::Clear() {
81   LLDB_INSTRUMENT_VA(this);
82   m_opaque_up->Clear();
83 }
84 
85 lldb_private::SaveCoreOptions &SBSaveCoreOptions::ref() const {
86   return *m_opaque_up.get();
87 }
88