]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/llvm/tools/lldb/source/Core/InputReaderStack.cpp
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
[FreeBSD/stable/10.git] / contrib / llvm / tools / lldb / source / Core / InputReaderStack.cpp
1 //===-- InputReaderStack.cpp ------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "lldb/Core/InputReaderStack.h"
11
12 // C Includes
13 // C++ Includes
14 // Other libraries and framework includes
15 // Project includes
16
17
18 using namespace lldb;
19 using namespace lldb_private;
20
21 InputReaderStack::InputReaderStack () :
22     m_input_readers (),
23     m_input_readers_mutex (Mutex::eMutexTypeRecursive)
24 {
25 }
26
27 InputReaderStack::~InputReaderStack ()
28 {
29 }
30
31 size_t
32 InputReaderStack::GetSize () const
33 {
34     Mutex::Locker locker (m_input_readers_mutex);
35     return m_input_readers.size();
36 }
37     
38 void
39 InputReaderStack::Push (const lldb::InputReaderSP& reader_sp)
40 {
41     if (reader_sp)
42     {
43         Mutex::Locker locker (m_input_readers_mutex);
44         m_input_readers.push (reader_sp);
45     }
46 }
47     
48 bool
49 InputReaderStack::IsEmpty () const
50 {
51     Mutex::Locker locker (m_input_readers_mutex);
52     return m_input_readers.empty();
53 }
54     
55 InputReaderSP
56 InputReaderStack::Top ()
57 {
58     InputReaderSP input_reader_sp;
59     {
60         Mutex::Locker locker (m_input_readers_mutex);
61         if (!m_input_readers.empty())
62             input_reader_sp = m_input_readers.top();
63     }
64         
65     return input_reader_sp;
66 }
67     
68 void
69 InputReaderStack::Pop ()
70 {
71     Mutex::Locker locker (m_input_readers_mutex);
72     if (!m_input_readers.empty())
73         m_input_readers.pop();
74 }
75     
76 Mutex &
77 InputReaderStack::GetStackMutex ()
78 {
79     return m_input_readers_mutex;
80 }