Add new Queue, QueueItem, Queuelist, SBQueue, SBQueueItem classes to represent
libdispatch aka Grand Central Dispatch (GCD) queues.  Still fleshing out the
documentation and testing of these but the overall API is settling down so it's
a good time to check it in.
<rdar://problem/15600370> 

llvm-svn: 197190
diff --git a/lldb/scripts/Python/build-swig-Python.sh b/lldb/scripts/Python/build-swig-Python.sh
index 5cbb964..c424c06 100755
--- a/lldb/scripts/Python/build-swig-Python.sh
+++ b/lldb/scripts/Python/build-swig-Python.sh
@@ -107,6 +107,8 @@
 " ${SRC_ROOT}/include/lldb/API/SBModule.h"\
 " ${SRC_ROOT}/include/lldb/API/SBModuleSpec.h"\
 " ${SRC_ROOT}/include/lldb/API/SBProcess.h"\
+" ${SRC_ROOT}/include/lldb/API/SBQueue.h"\
+" ${SRC_ROOT}/include/lldb/API/SBQueueItem.h"\
 " ${SRC_ROOT}/include/lldb/API/SBSourceManager.h"\
 " ${SRC_ROOT}/include/lldb/API/SBStream.h"\
 " ${SRC_ROOT}/include/lldb/API/SBStringList.h"\
@@ -154,6 +156,8 @@
 " ${SRC_ROOT}/scripts/Python/interface/SBModuleSpec.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBPlatform.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBProcess.i"\
+" ${SRC_ROOT}/scripts/Python/interface/SBQueue.i"\
+" ${SRC_ROOT}/scripts/Python/interface/SBQueueItem.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBSourceManager.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBStream.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBStringList.i"\
diff --git a/lldb/scripts/Python/interface/SBProcess.i b/lldb/scripts/Python/interface/SBProcess.i
index 9798f9a..7abbf91 100644
--- a/lldb/scripts/Python/interface/SBProcess.i
+++ b/lldb/scripts/Python/interface/SBProcess.i
@@ -180,6 +180,15 @@
     SetSelectedThreadByIndexID (uint32_t index_id);
     
     //------------------------------------------------------------------
+    // Queue related functions
+    //------------------------------------------------------------------
+    uint32_t
+    GetNumQueues ();
+
+    lldb::SBQueue
+    GetQueueAtIndex (uint32_t index);
+
+    //------------------------------------------------------------------
     // Stepping related functions
     //------------------------------------------------------------------
 
diff --git a/lldb/scripts/Python/interface/SBQueue.i b/lldb/scripts/Python/interface/SBQueue.i
new file mode 100644
index 0000000..09dbc19
--- /dev/null
+++ b/lldb/scripts/Python/interface/SBQueue.i
@@ -0,0 +1,54 @@
+//===-- SWIG Interface for SBQueue.h -----------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+namespace lldb {
+
+class SBQueue
+{
+public:
+    SBQueue ();
+
+    SBQueue (const lldb::QueueSP& queue_sp);
+    
+   ~SBQueue();
+
+    bool
+    IsValid() const;
+
+    void
+    Clear ();
+
+    lldb::SBProcess
+    GetProcess ();
+
+    lldb::queue_id_t
+    GetQueueID () const;
+
+    const char *
+    GetName () const;
+
+    uint32_t
+    GetIndexID () const;
+
+    uint32_t
+    GetNumThreads ();
+
+    lldb::SBThread
+    GetThreadAtIndex (uint32_t);
+
+    uint32_t
+    GetNumItems ();
+
+    lldb::SBQueueItem
+    GetItemAtIndex (uint32_t);
+
+};
+
+} // namespace lldb
+
diff --git a/lldb/scripts/Python/interface/SBQueueItem.i b/lldb/scripts/Python/interface/SBQueueItem.i
new file mode 100644
index 0000000..ffa2415
--- /dev/null
+++ b/lldb/scripts/Python/interface/SBQueueItem.i
@@ -0,0 +1,46 @@
+//===-- SWIG Interface for SBQueueItem.h ------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+namespace lldb {
+
+class SBQueueItem
+{
+public:
+    SBQueueItem ();
+
+    SBQueueItem (const lldb::QueueItemSP& queue_item_sp);
+    
+   ~SBQueueItem();
+
+    bool
+    IsValid() const;
+
+    void
+    Clear ();
+
+    lldb::QueueItemKind
+    GetKind () const;
+
+    void
+    SetKind (lldb::QueueItemKind kind);
+
+    lldb::SBAddress
+    GetAddress () const;
+
+    void
+    SetAddress (lldb::SBAddress addr);
+
+    void
+    SetQueueItem (const lldb::QueueItemSP& queue_item_sp);
+
+    lldb::SBThread
+    GetExtendedBacktraceThread (const char *type);
+};
+
+} // namespace lldb