diff options
author | Sean Callanan <scallanan@apple.com> | 2013-11-06 19:28:40 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2013-11-06 19:28:40 +0000 |
commit | 5c19eac1c8c95fa0e40fa71da664326d29dcaf18 (patch) | |
tree | a3620393bea2552d01d9014a2c1534cb4f644102 /lldb/include/lldb/Target/Process.h | |
parent | 5fb3a13ba7523d3a93290bcfa033b835151c19aa (diff) | |
download | bcm5719-llvm-5c19eac1c8c95fa0e40fa71da664326d29dcaf18.tar.gz bcm5719-llvm-5c19eac1c8c95fa0e40fa71da664326d29dcaf18.zip |
Added Iterable, a class that vends standard C++
iterators for LLDB's container data structures.
Iterable abstracts over the backing data structure,
ignoring keys for maps for example. It also provides
locking as a service so that the code
for (ThreadSP thread_sp : process->Threads())
{
// ... use thread_sp
}
takes the appropriate locks once, without having to
do anything else.
The salient advantages of this system are:
- Much simpler and idiomatic loop code
- Lock once instead of each time an element is fetched
- Less boilerplate to produce the iterators
The intent is that Iterable will replace Get...AtIndex
in most places, and that ForEach(), which solves the
same problem in a less-idiomatic way, be phased out in
favor of this approach.
I've added Iterables to ThreadList, TypeList, and
Process (which is really just forwarding to ThreadList).
llvm-svn: 194159
Diffstat (limited to 'lldb/include/lldb/Target/Process.h')
-rw-r--r-- | lldb/include/lldb/Target/Process.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h index aa7b5edc5af..b55b8da1352 100644 --- a/lldb/include/lldb/Target/Process.h +++ b/lldb/include/lldb/Target/Process.h @@ -3305,6 +3305,12 @@ public: return m_thread_list; } + ThreadList::ThreadIterable + Threads () + { + return m_thread_list.Threads(); + } + uint32_t GetNextThreadIndexID (uint64_t thread_id); |