diff options
Diffstat (limited to 'source/Utility/StringExtractorGDBRemote.h')
-rw-r--r-- | source/Utility/StringExtractorGDBRemote.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/source/Utility/StringExtractorGDBRemote.h b/source/Utility/StringExtractorGDBRemote.h new file mode 100644 index 000000000000..5a24d894b105 --- /dev/null +++ b/source/Utility/StringExtractorGDBRemote.h @@ -0,0 +1,103 @@ +//===-- StringExtractorGDBRemote.h ------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef utility_StringExtractorGDBRemote_h_ +#define utility_StringExtractorGDBRemote_h_ + +// C Includes +// C++ Includes +#include <string> +// Other libraries and framework includes +// Project includes +#include "Utility/StringExtractor.h" + +class StringExtractorGDBRemote : public StringExtractor +{ +public: + + StringExtractorGDBRemote() : + StringExtractor () + { + } + + StringExtractorGDBRemote(const char *cstr) : + StringExtractor (cstr) + { + } + StringExtractorGDBRemote(const StringExtractorGDBRemote& rhs) : + StringExtractor (rhs) + { + } + + virtual ~StringExtractorGDBRemote() + { + } + + enum ServerPacketType + { + eServerPacketType_nack = 0, + eServerPacketType_ack, + eServerPacketType_invalid, + eServerPacketType_unimplemented, + eServerPacketType_interrupt, // CTRL+c packet or "\x03" + eServerPacketType_A, // Program arguments packet + eServerPacketType_qfProcessInfo, + eServerPacketType_qsProcessInfo, + eServerPacketType_qC, + eServerPacketType_qGroupName, + eServerPacketType_qHostInfo, + eServerPacketType_qLaunchGDBServer, + eServerPacketType_qLaunchSuccess, + eServerPacketType_qProcessInfoPID, + eServerPacketType_qSpeedTest, + eServerPacketType_qUserName, + eServerPacketType_QEnvironment, + eServerPacketType_QSetDisableASLR, + eServerPacketType_QSetSTDIN, + eServerPacketType_QSetSTDOUT, + eServerPacketType_QSetSTDERR, + eServerPacketType_QSetWorkingDir, + eServerPacketType_QStartNoAckMode + }; + + ServerPacketType + GetServerPacketType () const; + + enum ResponseType + { + eUnsupported = 0, + eAck, + eNack, + eError, + eOK, + eResponse + }; + + ResponseType + GetResponseType () const; + + bool + IsOKResponse() const; + + bool + IsUnsupportedResponse() const; + + bool + IsNormalResponse () const; + + bool + IsErrorResponse() const; + + // Returns zero if the packet isn't a EXX packet where XX are two hex + // digits. Otherwise the error encoded in XX is returned. + uint8_t + GetError(); +}; + +#endif // utility_StringExtractorGDBRemote_h_ |