diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 19:53:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2019-12-20 19:53:05 +0000 |
commit | 0b57cec536236d46e3dba9bd041533462f33dbb7 (patch) | |
tree | 56229dbdbbf76d18580f72f789003db17246c8d9 /contrib/llvm-project/lldb/source/API/SBThreadCollection.cpp | |
parent | 718ef55ec7785aae63f98f8ca05dc07ed399c16d (diff) |
Notes
Diffstat (limited to 'contrib/llvm-project/lldb/source/API/SBThreadCollection.cpp')
-rw-r--r-- | contrib/llvm-project/lldb/source/API/SBThreadCollection.cpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/source/API/SBThreadCollection.cpp b/contrib/llvm-project/lldb/source/API/SBThreadCollection.cpp new file mode 100644 index 000000000000..3c1cf9865062 --- /dev/null +++ b/contrib/llvm-project/lldb/source/API/SBThreadCollection.cpp @@ -0,0 +1,110 @@ +//===-- SBThreadCollection.cpp ----------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/API/SBThreadCollection.h" +#include "SBReproducerPrivate.h" +#include "lldb/API/SBThread.h" +#include "lldb/Target/ThreadList.h" + +using namespace lldb; +using namespace lldb_private; + +SBThreadCollection::SBThreadCollection() : m_opaque_sp() { + LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBThreadCollection); +} + +SBThreadCollection::SBThreadCollection(const SBThreadCollection &rhs) + : m_opaque_sp(rhs.m_opaque_sp) { + LLDB_RECORD_CONSTRUCTOR(SBThreadCollection, + (const lldb::SBThreadCollection &), rhs); +} + +const SBThreadCollection &SBThreadCollection:: +operator=(const SBThreadCollection &rhs) { + LLDB_RECORD_METHOD( + const lldb::SBThreadCollection &, + SBThreadCollection, operator=,(const lldb::SBThreadCollection &), rhs); + + if (this != &rhs) + m_opaque_sp = rhs.m_opaque_sp; + return LLDB_RECORD_RESULT(*this); +} + +SBThreadCollection::SBThreadCollection(const ThreadCollectionSP &threads) + : m_opaque_sp(threads) {} + +SBThreadCollection::~SBThreadCollection() {} + +void SBThreadCollection::SetOpaque(const lldb::ThreadCollectionSP &threads) { + m_opaque_sp = threads; +} + +lldb_private::ThreadCollection *SBThreadCollection::get() const { + return m_opaque_sp.get(); +} + +lldb_private::ThreadCollection *SBThreadCollection::operator->() const { + return m_opaque_sp.operator->(); +} + +lldb::ThreadCollectionSP &SBThreadCollection::operator*() { + return m_opaque_sp; +} + +const lldb::ThreadCollectionSP &SBThreadCollection::operator*() const { + return m_opaque_sp; +} + +bool SBThreadCollection::IsValid() const { + LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBThreadCollection, IsValid); + return this->operator bool(); +} +SBThreadCollection::operator bool() const { + LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBThreadCollection, operator bool); + + return m_opaque_sp.get() != nullptr; +} + +size_t SBThreadCollection::GetSize() { + LLDB_RECORD_METHOD_NO_ARGS(size_t, SBThreadCollection, GetSize); + + if (m_opaque_sp) + return m_opaque_sp->GetSize(); + return 0; +} + +SBThread SBThreadCollection::GetThreadAtIndex(size_t idx) { + LLDB_RECORD_METHOD(lldb::SBThread, SBThreadCollection, GetThreadAtIndex, + (size_t), idx); + + SBThread thread; + if (m_opaque_sp && idx < m_opaque_sp->GetSize()) + thread = m_opaque_sp->GetThreadAtIndex(idx); + return LLDB_RECORD_RESULT(thread); +} + +namespace lldb_private { +namespace repro { + +template <> +void RegisterMethods<SBThreadCollection>(Registry &R) { + LLDB_REGISTER_CONSTRUCTOR(SBThreadCollection, ()); + LLDB_REGISTER_CONSTRUCTOR(SBThreadCollection, + (const lldb::SBThreadCollection &)); + LLDB_REGISTER_METHOD( + const lldb::SBThreadCollection &, + SBThreadCollection, operator=,(const lldb::SBThreadCollection &)); + LLDB_REGISTER_METHOD_CONST(bool, SBThreadCollection, IsValid, ()); + LLDB_REGISTER_METHOD_CONST(bool, SBThreadCollection, operator bool, ()); + LLDB_REGISTER_METHOD(size_t, SBThreadCollection, GetSize, ()); + LLDB_REGISTER_METHOD(lldb::SBThread, SBThreadCollection, GetThreadAtIndex, + (size_t)); +} + +} +} |