xref: /src/contrib/llvm-project/lldb/source/API/SBSaveCoreOptions.cpp (revision 62987288060ff68c817b7056815aa9fb8ba8ecd7)
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 Andric SBSaveCoreOptions::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 Andric SBSaveCoreOptions::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 Andric SBSaveCoreOptions::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 Andric SBError 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 Andric void 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 Andric void 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 Andric const 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 Andric SBFileSpec 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 Andric lldb::SaveCoreStyle SBSaveCoreOptions::GetStyle() const {
76ac9a064cSDimitry Andric   LLDB_INSTRUMENT_VA(this);
77ac9a064cSDimitry Andric   return m_opaque_up->GetStyle();
78ac9a064cSDimitry Andric }
79ac9a064cSDimitry Andric 
Clear()80ac9a064cSDimitry Andric void SBSaveCoreOptions::Clear() {
81ac9a064cSDimitry Andric   LLDB_INSTRUMENT_VA(this);
82ac9a064cSDimitry Andric   m_opaque_up->Clear();
83ac9a064cSDimitry Andric }
84ac9a064cSDimitry Andric 
ref() const85ac9a064cSDimitry Andric lldb_private::SaveCoreOptions &SBSaveCoreOptions::ref() const {
86ac9a064cSDimitry Andric   return *m_opaque_up.get();
87ac9a064cSDimitry Andric }
88