1 //===-- StringExtractor.h ---------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef utility_StringExtractor_h_
11 #define utility_StringExtractor_h_
18 // Other libraries and framework includes
29 //------------------------------------------------------------------
30 // Constructors and Destructors
31 //------------------------------------------------------------------
33 StringExtractor(const char *packet_cstr);
34 StringExtractor(const StringExtractor& rhs);
35 virtual ~StringExtractor();
37 //------------------------------------------------------------------
39 //------------------------------------------------------------------
40 const StringExtractor&
41 operator=(const StringExtractor& rhs);
43 // Returns true if the file position is still valid for the data
44 // contained in this string extractor object.
48 return m_index != UINT64_MAX;
58 SetFilePos (uint32_t idx)
85 return m_packet.empty();
91 if (m_index < m_packet.size())
92 return m_packet.size() - m_index;
96 GetChar (char fail_value = '\0');
99 GetHexU8 (uint8_t fail_value = 0, bool set_eof_on_fail = true);
102 GetNameColonValue (std::string &name, std::string &value);
105 GetU32 (uint32_t fail_value, int base = 0);
108 GetHexMaxU32 (bool little_endian, uint32_t fail_value);
111 GetHexMaxU64 (bool little_endian, uint64_t fail_value);
114 GetHexBytes (void *dst, size_t dst_len, uint8_t fail_fill_value);
117 GetHexWithFixedSize (uint32_t byte_size, bool little_endian, uint64_t fail_value);
120 GetHexByteString (std::string &str);
125 if (m_index < m_packet.size())
126 return m_packet.c_str() + m_index;
131 //------------------------------------------------------------------
132 // For StringExtractor only
133 //------------------------------------------------------------------
134 std::string m_packet; // The string in which to extract data.
135 uint64_t m_index; // When extracting data from a packet, this index
136 // will march along as things get extracted. If set
137 // to UINT64_MAX the end of the packet data was
138 // reached when decoding information
141 #endif // utility_StringExtractor_h_