180814287SRaphael Isemann //===-- SBLaunchInfo.cpp --------------------------------------------------===//
21ef7b2c8SOleksiy Vyalov //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
61ef7b2c8SOleksiy Vyalov //
71ef7b2c8SOleksiy Vyalov //===----------------------------------------------------------------------===//
81ef7b2c8SOleksiy Vyalov
91ef7b2c8SOleksiy Vyalov #include "lldb/API/SBLaunchInfo.h"
101755f5b1SJonas Devlieghere #include "lldb/Utility/Instrumentation.h"
111ef7b2c8SOleksiy Vyalov
12ca69be21SWalter Erquinigo #include "lldb/API/SBEnvironment.h"
133e0ad115SMed Ismail Bennani #include "lldb/API/SBError.h"
141ef7b2c8SOleksiy Vyalov #include "lldb/API/SBFileSpec.h"
151ef7b2c8SOleksiy Vyalov #include "lldb/API/SBListener.h"
163e0ad115SMed Ismail Bennani #include "lldb/API/SBStream.h"
173e0ad115SMed Ismail Bennani #include "lldb/API/SBStructuredData.h"
183e0ad115SMed Ismail Bennani #include "lldb/Core/StructuredDataImpl.h"
19eef758e9SPavel Labath #include "lldb/Host/ProcessLaunchInfo.h"
201ef7b2c8SOleksiy Vyalov
211ef7b2c8SOleksiy Vyalov using namespace lldb;
221ef7b2c8SOleksiy Vyalov using namespace lldb_private;
231ef7b2c8SOleksiy Vyalov
2462930e57SPavel Labath class lldb_private::SBLaunchInfoImpl : public ProcessLaunchInfo {
2562930e57SPavel Labath public:
SBLaunchInfoImpl()26a3436f73SKazu Hirata SBLaunchInfoImpl() : m_envp(GetEnvironment().getEnvp()) {}
2762930e57SPavel Labath
GetEnvp() const2862930e57SPavel Labath const char *const *GetEnvp() const { return m_envp; }
RegenerateEnvp()2962930e57SPavel Labath void RegenerateEnvp() { m_envp = GetEnvironment().getEnvp(); }
3062930e57SPavel Labath
operator =(const ProcessLaunchInfo & rhs)3162930e57SPavel Labath SBLaunchInfoImpl &operator=(const ProcessLaunchInfo &rhs) {
3262930e57SPavel Labath ProcessLaunchInfo::operator=(rhs);
3362930e57SPavel Labath RegenerateEnvp();
3462930e57SPavel Labath return *this;
3562930e57SPavel Labath }
3662930e57SPavel Labath
3762930e57SPavel Labath private:
3862930e57SPavel Labath Environment::Envp m_envp;
3962930e57SPavel Labath };
4062930e57SPavel Labath
SBLaunchInfo(const char ** argv)41b9c1b51eSKate Stone SBLaunchInfo::SBLaunchInfo(const char **argv)
4262930e57SPavel Labath : m_opaque_sp(new SBLaunchInfoImpl()) {
431755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, argv);
44baf5664fSJonas Devlieghere
451ef7b2c8SOleksiy Vyalov m_opaque_sp->GetFlags().Reset(eLaunchFlagDebug | eLaunchFlagDisableASLR);
461ef7b2c8SOleksiy Vyalov if (argv && argv[0])
471ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().SetArguments(argv);
481ef7b2c8SOleksiy Vyalov }
491ef7b2c8SOleksiy Vyalov
SBLaunchInfo(const SBLaunchInfo & rhs)501dfe7b5bSJonas Devlieghere SBLaunchInfo::SBLaunchInfo(const SBLaunchInfo &rhs) {
511755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, rhs);
521dfe7b5bSJonas Devlieghere
531dfe7b5bSJonas Devlieghere m_opaque_sp = rhs.m_opaque_sp;
541dfe7b5bSJonas Devlieghere }
551dfe7b5bSJonas Devlieghere
operator =(const SBLaunchInfo & rhs)56ede5cd9aSJonas Devlieghere SBLaunchInfo &SBLaunchInfo::operator=(const SBLaunchInfo &rhs) {
571755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, rhs);
581dfe7b5bSJonas Devlieghere
591dfe7b5bSJonas Devlieghere m_opaque_sp = rhs.m_opaque_sp;
60d232abc3SJonas Devlieghere return *this;
611dfe7b5bSJonas Devlieghere }
621dfe7b5bSJonas Devlieghere
63866b7a65SJonas Devlieghere SBLaunchInfo::~SBLaunchInfo() = default;
641ef7b2c8SOleksiy Vyalov
ref() const65b9c1b51eSKate Stone const lldb_private::ProcessLaunchInfo &SBLaunchInfo::ref() const {
661ef7b2c8SOleksiy Vyalov return *m_opaque_sp;
671ef7b2c8SOleksiy Vyalov }
681ef7b2c8SOleksiy Vyalov
set_ref(const ProcessLaunchInfo & info)6962930e57SPavel Labath void SBLaunchInfo::set_ref(const ProcessLaunchInfo &info) {
7062930e57SPavel Labath *m_opaque_sp = info;
7162930e57SPavel Labath }
7262930e57SPavel Labath
GetProcessID()73baf5664fSJonas Devlieghere lldb::pid_t SBLaunchInfo::GetProcessID() {
741755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
758f37ca56SIlia K
76baf5664fSJonas Devlieghere return m_opaque_sp->GetProcessID();
77baf5664fSJonas Devlieghere }
781ef7b2c8SOleksiy Vyalov
GetUserID()79baf5664fSJonas Devlieghere uint32_t SBLaunchInfo::GetUserID() {
801755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
811ef7b2c8SOleksiy Vyalov
82baf5664fSJonas Devlieghere return m_opaque_sp->GetUserID();
83baf5664fSJonas Devlieghere }
841ef7b2c8SOleksiy Vyalov
GetGroupID()85baf5664fSJonas Devlieghere uint32_t SBLaunchInfo::GetGroupID() {
861755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
871ef7b2c8SOleksiy Vyalov
88baf5664fSJonas Devlieghere return m_opaque_sp->GetGroupID();
89baf5664fSJonas Devlieghere }
901ef7b2c8SOleksiy Vyalov
UserIDIsValid()91baf5664fSJonas Devlieghere bool SBLaunchInfo::UserIDIsValid() {
921755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
93baf5664fSJonas Devlieghere
94baf5664fSJonas Devlieghere return m_opaque_sp->UserIDIsValid();
95baf5664fSJonas Devlieghere }
96baf5664fSJonas Devlieghere
GroupIDIsValid()97baf5664fSJonas Devlieghere bool SBLaunchInfo::GroupIDIsValid() {
981755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
99baf5664fSJonas Devlieghere
100baf5664fSJonas Devlieghere return m_opaque_sp->GroupIDIsValid();
101baf5664fSJonas Devlieghere }
102baf5664fSJonas Devlieghere
SetUserID(uint32_t uid)103baf5664fSJonas Devlieghere void SBLaunchInfo::SetUserID(uint32_t uid) {
1041755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, uid);
105baf5664fSJonas Devlieghere
106baf5664fSJonas Devlieghere m_opaque_sp->SetUserID(uid);
107baf5664fSJonas Devlieghere }
108baf5664fSJonas Devlieghere
SetGroupID(uint32_t gid)109baf5664fSJonas Devlieghere void SBLaunchInfo::SetGroupID(uint32_t gid) {
1101755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, gid);
111baf5664fSJonas Devlieghere
112baf5664fSJonas Devlieghere m_opaque_sp->SetGroupID(gid);
113baf5664fSJonas Devlieghere }
1141ef7b2c8SOleksiy Vyalov
GetExecutableFile()115b9c1b51eSKate Stone SBFileSpec SBLaunchInfo::GetExecutableFile() {
1161755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
117baf5664fSJonas Devlieghere
118d232abc3SJonas Devlieghere return SBFileSpec(m_opaque_sp->GetExecutableFile());
1191ef7b2c8SOleksiy Vyalov }
1201ef7b2c8SOleksiy Vyalov
SetExecutableFile(SBFileSpec exe_file,bool add_as_first_arg)121b9c1b51eSKate Stone void SBLaunchInfo::SetExecutableFile(SBFileSpec exe_file,
122b9c1b51eSKate Stone bool add_as_first_arg) {
1231755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, exe_file, add_as_first_arg);
124baf5664fSJonas Devlieghere
1251ef7b2c8SOleksiy Vyalov m_opaque_sp->SetExecutableFile(exe_file.ref(), add_as_first_arg);
1261ef7b2c8SOleksiy Vyalov }
1271ef7b2c8SOleksiy Vyalov
GetListener()128b9c1b51eSKate Stone SBListener SBLaunchInfo::GetListener() {
1291755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
130baf5664fSJonas Devlieghere
131d232abc3SJonas Devlieghere return SBListener(m_opaque_sp->GetListener());
1321ef7b2c8SOleksiy Vyalov }
1331ef7b2c8SOleksiy Vyalov
SetListener(SBListener & listener)134b9c1b51eSKate Stone void SBLaunchInfo::SetListener(SBListener &listener) {
1351755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, listener);
136baf5664fSJonas Devlieghere
1371ef7b2c8SOleksiy Vyalov m_opaque_sp->SetListener(listener.GetSP());
1381ef7b2c8SOleksiy Vyalov }
1391ef7b2c8SOleksiy Vyalov
GetNumArguments()140b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetNumArguments() {
1411755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
142baf5664fSJonas Devlieghere
1431ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetArguments().GetArgumentCount();
1441ef7b2c8SOleksiy Vyalov }
1451ef7b2c8SOleksiy Vyalov
GetArgumentAtIndex(uint32_t idx)146b9c1b51eSKate Stone const char *SBLaunchInfo::GetArgumentAtIndex(uint32_t idx) {
1471755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, idx);
148baf5664fSJonas Devlieghere
1491ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetArguments().GetArgumentAtIndex(idx);
1501ef7b2c8SOleksiy Vyalov }
1511ef7b2c8SOleksiy Vyalov
SetArguments(const char ** argv,bool append)152b9c1b51eSKate Stone void SBLaunchInfo::SetArguments(const char **argv, bool append) {
1531755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, argv, append);
154baf5664fSJonas Devlieghere
155b9c1b51eSKate Stone if (append) {
1561ef7b2c8SOleksiy Vyalov if (argv)
1571ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().AppendArguments(argv);
158b9c1b51eSKate Stone } else {
1591ef7b2c8SOleksiy Vyalov if (argv)
1601ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().SetArguments(argv);
1611ef7b2c8SOleksiy Vyalov else
1621ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().Clear();
1631ef7b2c8SOleksiy Vyalov }
1641ef7b2c8SOleksiy Vyalov }
1651ef7b2c8SOleksiy Vyalov
GetNumEnvironmentEntries()166b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetNumEnvironmentEntries() {
1671755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
168baf5664fSJonas Devlieghere
16962930e57SPavel Labath return m_opaque_sp->GetEnvironment().size();
1701ef7b2c8SOleksiy Vyalov }
1711ef7b2c8SOleksiy Vyalov
GetEnvironmentEntryAtIndex(uint32_t idx)172b9c1b51eSKate Stone const char *SBLaunchInfo::GetEnvironmentEntryAtIndex(uint32_t idx) {
1731755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, idx);
174baf5664fSJonas Devlieghere
17562930e57SPavel Labath if (idx > GetNumEnvironmentEntries())
17662930e57SPavel Labath return nullptr;
17762930e57SPavel Labath return m_opaque_sp->GetEnvp()[idx];
1781ef7b2c8SOleksiy Vyalov }
1791ef7b2c8SOleksiy Vyalov
SetEnvironmentEntries(const char ** envp,bool append)180b9c1b51eSKate Stone void SBLaunchInfo::SetEnvironmentEntries(const char **envp, bool append) {
1811755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, envp, append);
182ca69be21SWalter Erquinigo SetEnvironment(SBEnvironment(Environment(envp)), append);
183ca69be21SWalter Erquinigo }
184baf5664fSJonas Devlieghere
SetEnvironment(const SBEnvironment & env,bool append)185ca69be21SWalter Erquinigo void SBLaunchInfo::SetEnvironment(const SBEnvironment &env, bool append) {
1861755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, env, append);
187ca69be21SWalter Erquinigo Environment &refEnv = env.ref();
1889cdd68e7SPavel Labath if (append) {
1899cdd68e7SPavel Labath for (auto &KV : refEnv)
1909cdd68e7SPavel Labath m_opaque_sp->GetEnvironment().insert_or_assign(KV.first(), KV.second);
1919cdd68e7SPavel Labath } else
192ca69be21SWalter Erquinigo m_opaque_sp->GetEnvironment() = refEnv;
19362930e57SPavel Labath m_opaque_sp->RegenerateEnvp();
1941ef7b2c8SOleksiy Vyalov }
1951ef7b2c8SOleksiy Vyalov
GetEnvironment()196ca69be21SWalter Erquinigo SBEnvironment SBLaunchInfo::GetEnvironment() {
1971755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
198d232abc3SJonas Devlieghere return SBEnvironment(Environment(m_opaque_sp->GetEnvironment()));
199ca69be21SWalter Erquinigo }
200ca69be21SWalter Erquinigo
Clear()201baf5664fSJonas Devlieghere void SBLaunchInfo::Clear() {
2021755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
203baf5664fSJonas Devlieghere
204baf5664fSJonas Devlieghere m_opaque_sp->Clear();
205baf5664fSJonas Devlieghere }
2061ef7b2c8SOleksiy Vyalov
GetWorkingDirectory() const207b9c1b51eSKate Stone const char *SBLaunchInfo::GetWorkingDirectory() const {
2081755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
209baf5664fSJonas Devlieghere
210*1b4b12a3SNico Weber return m_opaque_sp->GetWorkingDirectory().GetCString();
2111ef7b2c8SOleksiy Vyalov }
2121ef7b2c8SOleksiy Vyalov
SetWorkingDirectory(const char * working_dir)213b9c1b51eSKate Stone void SBLaunchInfo::SetWorkingDirectory(const char *working_dir) {
2141755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, working_dir);
215baf5664fSJonas Devlieghere
2168f3be7a3SJonas Devlieghere m_opaque_sp->SetWorkingDirectory(FileSpec(working_dir));
2171ef7b2c8SOleksiy Vyalov }
2181ef7b2c8SOleksiy Vyalov
GetLaunchFlags()219b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetLaunchFlags() {
2201755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
221baf5664fSJonas Devlieghere
2221ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetFlags().Get();
2231ef7b2c8SOleksiy Vyalov }
2241ef7b2c8SOleksiy Vyalov
SetLaunchFlags(uint32_t flags)225b9c1b51eSKate Stone void SBLaunchInfo::SetLaunchFlags(uint32_t flags) {
2261755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, flags);
227baf5664fSJonas Devlieghere
2281ef7b2c8SOleksiy Vyalov m_opaque_sp->GetFlags().Reset(flags);
2291ef7b2c8SOleksiy Vyalov }
2301ef7b2c8SOleksiy Vyalov
GetProcessPluginName()231b9c1b51eSKate Stone const char *SBLaunchInfo::GetProcessPluginName() {
2321755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
233baf5664fSJonas Devlieghere
2341ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetProcessPluginName();
2351ef7b2c8SOleksiy Vyalov }
2361ef7b2c8SOleksiy Vyalov
SetProcessPluginName(const char * plugin_name)237b9c1b51eSKate Stone void SBLaunchInfo::SetProcessPluginName(const char *plugin_name) {
2381755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, plugin_name);
239baf5664fSJonas Devlieghere
2401ef7b2c8SOleksiy Vyalov return m_opaque_sp->SetProcessPluginName(plugin_name);
2411ef7b2c8SOleksiy Vyalov }
2421ef7b2c8SOleksiy Vyalov
GetShell()243b9c1b51eSKate Stone const char *SBLaunchInfo::GetShell() {
2441755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
245baf5664fSJonas Devlieghere
24605097246SAdrian Prantl // Constify this string so that it is saved in the string pool. Otherwise it
24705097246SAdrian Prantl // would be freed when this function goes out of scope.
2481ef7b2c8SOleksiy Vyalov ConstString shell(m_opaque_sp->GetShell().GetPath().c_str());
2491ef7b2c8SOleksiy Vyalov return shell.AsCString();
2501ef7b2c8SOleksiy Vyalov }
2511ef7b2c8SOleksiy Vyalov
SetShell(const char * path)252b9c1b51eSKate Stone void SBLaunchInfo::SetShell(const char *path) {
2531755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, path);
254baf5664fSJonas Devlieghere
2558f3be7a3SJonas Devlieghere m_opaque_sp->SetShell(FileSpec(path));
2561ef7b2c8SOleksiy Vyalov }
2571ef7b2c8SOleksiy Vyalov
GetShellExpandArguments()258b9c1b51eSKate Stone bool SBLaunchInfo::GetShellExpandArguments() {
2591755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
260baf5664fSJonas Devlieghere
261b38ef8c2SEnrico Granata return m_opaque_sp->GetShellExpandArguments();
262c11b101fSEnrico Granata }
263c11b101fSEnrico Granata
SetShellExpandArguments(bool expand)264b9c1b51eSKate Stone void SBLaunchInfo::SetShellExpandArguments(bool expand) {
2651755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, expand);
266baf5664fSJonas Devlieghere
267b38ef8c2SEnrico Granata m_opaque_sp->SetShellExpandArguments(expand);
268c11b101fSEnrico Granata }
269c11b101fSEnrico Granata
GetResumeCount()270b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetResumeCount() {
2711755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
272baf5664fSJonas Devlieghere
2731ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetResumeCount();
2741ef7b2c8SOleksiy Vyalov }
2751ef7b2c8SOleksiy Vyalov
SetResumeCount(uint32_t c)276b9c1b51eSKate Stone void SBLaunchInfo::SetResumeCount(uint32_t c) {
2771755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, c);
278baf5664fSJonas Devlieghere
2791ef7b2c8SOleksiy Vyalov m_opaque_sp->SetResumeCount(c);
2801ef7b2c8SOleksiy Vyalov }
2811ef7b2c8SOleksiy Vyalov
AddCloseFileAction(int fd)282b9c1b51eSKate Stone bool SBLaunchInfo::AddCloseFileAction(int fd) {
2831755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, fd);
284baf5664fSJonas Devlieghere
2851ef7b2c8SOleksiy Vyalov return m_opaque_sp->AppendCloseFileAction(fd);
2861ef7b2c8SOleksiy Vyalov }
2871ef7b2c8SOleksiy Vyalov
AddDuplicateFileAction(int fd,int dup_fd)288b9c1b51eSKate Stone bool SBLaunchInfo::AddDuplicateFileAction(int fd, int dup_fd) {
2891755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, fd, dup_fd);
290baf5664fSJonas Devlieghere
2911ef7b2c8SOleksiy Vyalov return m_opaque_sp->AppendDuplicateFileAction(fd, dup_fd);
2921ef7b2c8SOleksiy Vyalov }
2931ef7b2c8SOleksiy Vyalov
AddOpenFileAction(int fd,const char * path,bool read,bool write)294b9c1b51eSKate Stone bool SBLaunchInfo::AddOpenFileAction(int fd, const char *path, bool read,
295b9c1b51eSKate Stone bool write) {
2961755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, fd, path, read, write);
297baf5664fSJonas Devlieghere
2988f3be7a3SJonas Devlieghere return m_opaque_sp->AppendOpenFileAction(fd, FileSpec(path), read, write);
2991ef7b2c8SOleksiy Vyalov }
3001ef7b2c8SOleksiy Vyalov
AddSuppressFileAction(int fd,bool read,bool write)301b9c1b51eSKate Stone bool SBLaunchInfo::AddSuppressFileAction(int fd, bool read, bool write) {
3021755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, fd, read, write);
303baf5664fSJonas Devlieghere
3041ef7b2c8SOleksiy Vyalov return m_opaque_sp->AppendSuppressFileAction(fd, read, write);
3051ef7b2c8SOleksiy Vyalov }
3061ef7b2c8SOleksiy Vyalov
SetLaunchEventData(const char * data)307b9c1b51eSKate Stone void SBLaunchInfo::SetLaunchEventData(const char *data) {
3081755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, data);
309baf5664fSJonas Devlieghere
3101ef7b2c8SOleksiy Vyalov m_opaque_sp->SetLaunchEventData(data);
3111ef7b2c8SOleksiy Vyalov }
3121ef7b2c8SOleksiy Vyalov
GetLaunchEventData() const313b9c1b51eSKate Stone const char *SBLaunchInfo::GetLaunchEventData() const {
3141755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
315baf5664fSJonas Devlieghere
3161ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetLaunchEventData();
3171ef7b2c8SOleksiy Vyalov }
3181ef7b2c8SOleksiy Vyalov
SetDetachOnError(bool enable)319b9c1b51eSKate Stone void SBLaunchInfo::SetDetachOnError(bool enable) {
3201755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, enable);
321baf5664fSJonas Devlieghere
3221ef7b2c8SOleksiy Vyalov m_opaque_sp->SetDetachOnError(enable);
3231ef7b2c8SOleksiy Vyalov }
3241ef7b2c8SOleksiy Vyalov
GetDetachOnError() const325b9c1b51eSKate Stone bool SBLaunchInfo::GetDetachOnError() const {
3261755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
327baf5664fSJonas Devlieghere
3281ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetDetachOnError();
3291ef7b2c8SOleksiy Vyalov }
330ae211eceSMichal Gorny
GetScriptedProcessClassName() const3313e0ad115SMed Ismail Bennani const char *SBLaunchInfo::GetScriptedProcessClassName() const {
3321755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
3333e0ad115SMed Ismail Bennani
3343e0ad115SMed Ismail Bennani // Constify this string so that it is saved in the string pool. Otherwise it
3353e0ad115SMed Ismail Bennani // would be freed when this function goes out of scope.
3363e0ad115SMed Ismail Bennani ConstString class_name(m_opaque_sp->GetScriptedProcessClassName().c_str());
3373e0ad115SMed Ismail Bennani return class_name.AsCString();
3383e0ad115SMed Ismail Bennani }
3393e0ad115SMed Ismail Bennani
SetScriptedProcessClassName(const char * class_name)3403e0ad115SMed Ismail Bennani void SBLaunchInfo::SetScriptedProcessClassName(const char *class_name) {
3411755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, class_name);
3423e0ad115SMed Ismail Bennani
3433e0ad115SMed Ismail Bennani m_opaque_sp->SetScriptedProcessClassName(class_name);
3443e0ad115SMed Ismail Bennani }
3453e0ad115SMed Ismail Bennani
GetScriptedProcessDictionary() const3463e0ad115SMed Ismail Bennani lldb::SBStructuredData SBLaunchInfo::GetScriptedProcessDictionary() const {
3471755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this);
3483e0ad115SMed Ismail Bennani
3493e0ad115SMed Ismail Bennani lldb_private::StructuredData::DictionarySP dict_sp =
3503e0ad115SMed Ismail Bennani m_opaque_sp->GetScriptedProcessDictionarySP();
3513e0ad115SMed Ismail Bennani
3523e0ad115SMed Ismail Bennani SBStructuredData data;
3533e0ad115SMed Ismail Bennani data.m_impl_up->SetObjectSP(dict_sp);
3543e0ad115SMed Ismail Bennani
355d232abc3SJonas Devlieghere return data;
3563e0ad115SMed Ismail Bennani }
3573e0ad115SMed Ismail Bennani
SetScriptedProcessDictionary(lldb::SBStructuredData dict)3583e0ad115SMed Ismail Bennani void SBLaunchInfo::SetScriptedProcessDictionary(lldb::SBStructuredData dict) {
3591755f5b1SJonas Devlieghere LLDB_INSTRUMENT_VA(this, dict);
360ad0f7d3dSMed Ismail Bennani if (!dict.IsValid() || !dict.m_impl_up)
3613e0ad115SMed Ismail Bennani return;
3623e0ad115SMed Ismail Bennani
363ad0f7d3dSMed Ismail Bennani StructuredData::ObjectSP obj_sp = dict.m_impl_up->GetObjectSP();
364ad0f7d3dSMed Ismail Bennani
365ad0f7d3dSMed Ismail Bennani if (!obj_sp)
366ad0f7d3dSMed Ismail Bennani return;
367ad0f7d3dSMed Ismail Bennani
368ad0f7d3dSMed Ismail Bennani StructuredData::DictionarySP dict_sp =
369ad0f7d3dSMed Ismail Bennani std::make_shared<StructuredData::Dictionary>(obj_sp);
370ad0f7d3dSMed Ismail Bennani if (!dict_sp || dict_sp->GetType() == lldb::eStructuredDataTypeInvalid)
371ad0f7d3dSMed Ismail Bennani return;
3723e0ad115SMed Ismail Bennani
3733e0ad115SMed Ismail Bennani m_opaque_sp->SetScriptedProcessDictionarySP(dict_sp);
3743e0ad115SMed Ismail Bennani }
375