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 GetS32 (int32_t fail_value, int base = 0);
108 GetU32 (uint32_t fail_value, int base = 0);
111 GetS64 (int64_t fail_value, int base = 0);
114 GetU64 (uint64_t fail_value, int base = 0);
117 GetHexMaxU32 (bool little_endian, uint32_t fail_value);
120 GetHexMaxU64 (bool little_endian, uint64_t fail_value);
123 GetHexBytes (void *dst, size_t dst_len, uint8_t fail_fill_value);
126 GetHexWithFixedSize (uint32_t byte_size, bool little_endian, uint64_t fail_value);
129 GetHexByteString (std::string &str);
132 GetHexByteStringTerminatedBy (std::string &str,
138 if (m_index < m_packet.size())
139 return m_packet.c_str() + m_index;
144 //------------------------------------------------------------------
145 // For StringExtractor only
146 //------------------------------------------------------------------
147 std::string m_packet; // The string in which to extract data.
148 uint64_t m_index; // When extracting data from a packet, this index
149 // will march along as things get extracted. If set
150 // to UINT64_MAX the end of the packet data was
151 // reached when decoding information
154 #endif // utility_StringExtractor_h_