teak-llvm/lldb/source/Utility/StringExtractorGDBRemote.cpp
Greg Clayton c982c768d2 Merged Eli Friedman's linux build changes where he added Makefile files that
enabled LLVM make style building and made this compile LLDB on Mac OS X. We
can now iterate on this to make the build work on both linux and macosx.

llvm-svn: 108009
2010-07-09 20:39:50 +00:00

90 lines
1.7 KiB
C++

//===-- StringExtractorGDBRemote.cpp ----------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "Utility/StringExtractorGDBRemote.h"
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
StringExtractorGDBRemote::Type
StringExtractorGDBRemote::GetType () const
{
if (m_packet.empty())
return eUnsupported;
switch (m_packet[0])
{
case 'E':
if (m_packet.size() == 3 &&
isxdigit(m_packet[1]) &&
isxdigit(m_packet[2]))
return eError;
break;
case 'O':
if (m_packet.size() == 2 && m_packet[1] == 'K')
return eOK;
break;
case '+':
if (m_packet.size() == 1)
return eAck;
break;
case '-':
if (m_packet.size() == 1)
return eNack;
break;
}
return eResponse;
}
bool
StringExtractorGDBRemote::IsOKPacket() const
{
return GetType () == eOK;
}
bool
StringExtractorGDBRemote::IsUnsupportedPacket() const
{
return GetType () == eUnsupported;
}
bool
StringExtractorGDBRemote::IsNormalPacket() const
{
return GetType () == eResponse;
}
bool
StringExtractorGDBRemote::IsErrorPacket() const
{
return GetType () == eError &&
m_packet.size() == 3 &&
isxdigit(m_packet[1]) &&
isxdigit(m_packet[2]);
}
uint8_t
StringExtractorGDBRemote::GetError ()
{
if (GetType() == eError)
{
SetFilePos(1);
return GetHexU8(255);
}
return 0;
}