//===-- InputReaderStack.cpp ------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "lldb/Core/InputReaderStack.h" // C Includes // C++ Includes // Other libraries and framework includes // Project includes using namespace lldb; using namespace lldb_private; InputReaderStack::InputReaderStack () : m_input_readers (), m_input_readers_mutex (Mutex::eMutexTypeRecursive) { } InputReaderStack::~InputReaderStack () { } size_t InputReaderStack::GetSize () const { Mutex::Locker locker (m_input_readers_mutex); return m_input_readers.size(); } void InputReaderStack::Push (const lldb::InputReaderSP& reader_sp) { if (reader_sp) { Mutex::Locker locker (m_input_readers_mutex); m_input_readers.push (reader_sp); } } bool InputReaderStack::IsEmpty () const { Mutex::Locker locker (m_input_readers_mutex); return m_input_readers.empty(); } InputReaderSP InputReaderStack::Top () { InputReaderSP input_reader_sp; { Mutex::Locker locker (m_input_readers_mutex); if (!m_input_readers.empty()) input_reader_sp = m_input_readers.top(); } return input_reader_sp; } void InputReaderStack::Pop () { Mutex::Locker locker (m_input_readers_mutex); if (!m_input_readers.empty()) m_input_readers.pop(); } Mutex & InputReaderStack::GetStackMutex () { return m_input_readers_mutex; }