diff options
Diffstat (limited to 'lldb/source/Target')
| -rw-r--r-- | lldb/source/Target/Thread.cpp | 14 | ||||
| -rw-r--r-- | lldb/source/Target/ThreadSpec.cpp | 64 |
2 files changed, 65 insertions, 13 deletions
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 510988a1591..97a55fb7434 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -617,20 +617,8 @@ Thread::MatchesSpec (const ThreadSpec *spec) { if (spec == NULL) return true; - - if (!spec->TIDMatches(GetID())) - return false; - if (!spec->IndexMatches(GetIndexID())) - return false; - - if (!spec->NameMatches (GetName())) - return false; - - if (!spec->QueueNameMatches (GetQueueName())) - return false; - - return true; + return spec->ThreadPassesBasicTests(this); } void diff --git a/lldb/source/Target/ThreadSpec.cpp b/lldb/source/Target/ThreadSpec.cpp index 5d1089188fe..e2965582688 100644 --- a/lldb/source/Target/ThreadSpec.cpp +++ b/lldb/source/Target/ThreadSpec.cpp @@ -56,3 +56,67 @@ ThreadSpec::GetQueueName () const else return m_queue_name.c_str(); } + +bool +ThreadSpec::ThreadPassesBasicTests (Thread *thread) const +{ + + if (!HasSpecification()) + return true; + + if (!TIDMatches(thread->GetID())) + return false; + + if (!IndexMatches(thread->GetIndexID())) + return false; + + if (!NameMatches (thread->GetName())) + return false; + + if (!QueueNameMatches (thread->GetQueueName())) + return false; + + return true; + +} + +bool +ThreadSpec::HasSpecification() const +{ + return (m_index != -1 || m_tid != LLDB_INVALID_THREAD_ID || !m_name.empty() || !m_queue_name.empty()); +} +void +ThreadSpec::GetDescription (Stream *s, lldb::DescriptionLevel level) const +{ + if (!HasSpecification()) + { + if (level == eDescriptionLevelBrief) + { + s->PutCString("thread spec: no "); + } + } + else + { + if (level == eDescriptionLevelBrief) + { + s->PutCString("thread spec: yes "); + } + else + { + if (GetTID() != LLDB_INVALID_THREAD_ID) + s->Printf("tid: 0x%llx ", GetTID()); + + if (GetIndex() != -1) + s->Printf("index: %d ", GetIndex()); + + const char *name = GetName(); + if (name) + s->Printf ("thread name: \"%s\" ", name); + + const char *queue_name = GetQueueName(); + if (queue_name) + s->Printf ("queue name: \"%s\" ", queue_name); + } + + } +} |

