blob: f7dcc4181f3f39939738f6d2c6444a8d7b3411cd [file] [log] [blame]
Chris Lattner24943d22010-06-08 16:52:24 +00001//===-- StringExtractorGDBRemote.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 "StringExtractorGDBRemote.h"
11
12// C Includes
13// C++ Includes
14// Other libraries and framework includes
15// Project includes
16
17
18
19StringExtractorGDBRemote::Type
20StringExtractorGDBRemote::GetType () const
21{
22 if (m_packet.empty())
23 return eUnsupported;
24
25 switch (m_packet[0])
26 {
27 case 'E':
28 if (m_packet.size() == 3 &&
29 isxdigit(m_packet[1]) &&
30 isxdigit(m_packet[2]))
31 return eError;
32 break;
33
34 case 'O':
35 if (m_packet.size() == 2 && m_packet[1] == 'K')
36 return eOK;
37 break;
38
39 case '+':
40 if (m_packet.size() == 1)
41 return eAck;
42 break;
43
44 case '-':
45 if (m_packet.size() == 1)
46 return eNack;
47 break;
48 }
49 return eResponse;
50}
51
52bool
53StringExtractorGDBRemote::IsOKPacket() const
54{
55 return GetType () == eOK;
56}
57
58
59bool
60StringExtractorGDBRemote::IsUnsupportedPacket() const
61{
62 return GetType () == eUnsupported;
63}
64
65bool
66StringExtractorGDBRemote::IsNormalPacket() const
67{
68 return GetType () == eResponse;
69}
70
71bool
72StringExtractorGDBRemote::IsErrorPacket() const
73{
74 return GetType () == eError &&
75 m_packet.size() == 3 &&
76 isxdigit(m_packet[1]) &&
77 isxdigit(m_packet[2]);
78}
79
80uint8_t
81StringExtractorGDBRemote::GetError ()
82{
83 if (GetType() == eError)
84 {
85 SetFilePos(1);
86 return GetHexU8(255);
87 }
88 return 0;
89}