summaryrefslogtreecommitdiff
path: root/lldb/source/API/SBLaunchInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/API/SBLaunchInfo.cpp')
-rw-r--r--lldb/source/API/SBLaunchInfo.cpp42
1 files changed, 37 insertions, 5 deletions
diff --git a/lldb/source/API/SBLaunchInfo.cpp b/lldb/source/API/SBLaunchInfo.cpp
index 5c5e69704c7cf..ba13072e8f9bc 100644
--- a/lldb/source/API/SBLaunchInfo.cpp
+++ b/lldb/source/API/SBLaunchInfo.cpp
@@ -1,4 +1,4 @@
-//===-- SBLaunchInfo.cpp ----------------------------------------*- C++ -*-===//
+//===-- SBLaunchInfo.cpp --------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -9,6 +9,7 @@
#include "lldb/API/SBLaunchInfo.h"
#include "SBReproducerPrivate.h"
+#include "lldb/API/SBEnvironment.h"
#include "lldb/API/SBFileSpec.h"
#include "lldb/API/SBListener.h"
#include "lldb/Host/ProcessLaunchInfo.h"
@@ -43,7 +44,21 @@ SBLaunchInfo::SBLaunchInfo(const char **argv)
m_opaque_sp->GetArguments().SetArguments(argv);
}
-SBLaunchInfo::~SBLaunchInfo() {}
+SBLaunchInfo::SBLaunchInfo(const SBLaunchInfo &rhs) {
+ LLDB_RECORD_CONSTRUCTOR(SBLaunchInfo, (const lldb::SBLaunchInfo &), rhs);
+
+ m_opaque_sp = rhs.m_opaque_sp;
+}
+
+SBLaunchInfo &SBLaunchInfo::operator=(const SBLaunchInfo &rhs) {
+ LLDB_RECORD_METHOD(SBLaunchInfo &,
+ SBLaunchInfo, operator=,(const lldb::SBLaunchInfo &), rhs);
+
+ m_opaque_sp = rhs.m_opaque_sp;
+ return LLDB_RECORD_RESULT(*this);
+}
+
+SBLaunchInfo::~SBLaunchInfo() = default;
const lldb_private::ProcessLaunchInfo &SBLaunchInfo::ref() const {
return *m_opaque_sp;
@@ -168,15 +183,26 @@ const char *SBLaunchInfo::GetEnvironmentEntryAtIndex(uint32_t idx) {
void SBLaunchInfo::SetEnvironmentEntries(const char **envp, bool append) {
LLDB_RECORD_METHOD(void, SBLaunchInfo, SetEnvironmentEntries,
(const char **, bool), envp, append);
+ SetEnvironment(SBEnvironment(Environment(envp)), append);
+}
- Environment env(envp);
+void SBLaunchInfo::SetEnvironment(const SBEnvironment &env, bool append) {
+ LLDB_RECORD_METHOD(void, SBLaunchInfo, SetEnvironment,
+ (const lldb::SBEnvironment &, bool), env, append);
+ Environment &refEnv = env.ref();
if (append)
- m_opaque_sp->GetEnvironment().insert(env.begin(), env.end());
+ m_opaque_sp->GetEnvironment().insert(refEnv.begin(), refEnv.end());
else
- m_opaque_sp->GetEnvironment() = env;
+ m_opaque_sp->GetEnvironment() = refEnv;
m_opaque_sp->RegenerateEnvp();
}
+SBEnvironment SBLaunchInfo::GetEnvironment() {
+ LLDB_RECORD_METHOD_NO_ARGS(lldb::SBEnvironment, SBLaunchInfo, GetEnvironment);
+ return LLDB_RECORD_RESULT(
+ SBEnvironment(Environment(m_opaque_sp->GetEnvironment())));
+}
+
void SBLaunchInfo::Clear() {
LLDB_RECORD_METHOD_NO_ARGS(void, SBLaunchInfo, Clear);
@@ -322,6 +348,9 @@ namespace repro {
template <>
void RegisterMethods<SBLaunchInfo>(Registry &R) {
LLDB_REGISTER_CONSTRUCTOR(SBLaunchInfo, (const char **));
+ LLDB_REGISTER_CONSTRUCTOR(SBLaunchInfo, (const lldb::SBLaunchInfo &));
+ LLDB_REGISTER_METHOD(SBLaunchInfo &,
+ SBLaunchInfo, operator=,(const lldb::SBLaunchInfo &));
LLDB_REGISTER_METHOD(lldb::pid_t, SBLaunchInfo, GetProcessID, ());
LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetUserID, ());
LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetGroupID, ());
@@ -373,6 +402,9 @@ void RegisterMethods<SBLaunchInfo>(Registry &R) {
());
LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetDetachOnError, (bool));
LLDB_REGISTER_METHOD_CONST(bool, SBLaunchInfo, GetDetachOnError, ());
+ LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetEnvironment,
+ (const lldb::SBEnvironment &, bool));
+ LLDB_REGISTER_METHOD(lldb::SBEnvironment, SBLaunchInfo, GetEnvironment, ());
}
}