retdec
string.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_FILEFORMAT_TYPES_STRINGS_STRING_H
8 #define RETDEC_FILEFORMAT_TYPES_STRINGS_STRING_H
9 
10 #include <string>
11 
12 namespace retdec {
13 namespace fileformat {
14 
15 enum class StringType
16 {
17  Ascii,
18  Wide
19 };
20 
21 class String
22 {
23  private:
25  std::uint64_t fileOffset;
26  std::string sectionName;
27  std::string content;
28  public:
29  template <typename SectionNameT, typename ContentT>
30  String(StringType type, std::uint64_t fileOffset, SectionNameT&& sectionName, ContentT&& content)
31  : type(type), fileOffset(fileOffset), sectionName(std::forward<SectionNameT>(sectionName)), content(std::forward<ContentT>(content)) {}
32  String(const String&) = default;
33  String(String&&) noexcept = default;
34  ~String() = default;
35 
36  String& operator=(const String&) = default;
37  String& operator=(String&&) = default;
38 
39  StringType getType() const;
40  std::uint64_t getFileOffset() const;
41  const std::string& getSectionName() const;
42  const std::string& getContent() const;
43 
44  bool isAscii() const;
45  bool isWide() const;
46 
47  void setType(StringType stringType);
48  void setFileOffset(std::uint64_t stringFileOffset);
49  void setSectionName(const std::string& sectionName);
50  void setSectionName(std::string&& sectionName);
51  void setContent(const std::string& stringContent);
52  void setContent(std::string&& stringContent);
53 
54  bool operator<(const String& rhs) const;
55  bool operator==(const String& rhs) const;
56  bool operator!=(const String& rhs) const;
57 };
58 
59 } // namespace fileformat
60 } // namespace retdec
61 
62 #endif
Definition: string.h:22
std::uint64_t fileOffset
Definition: string.h:25
bool isWide() const
Definition: string.cpp:37
String(StringType type, std::uint64_t fileOffset, SectionNameT &&sectionName, ContentT &&content)
Definition: string.h:30
String(String &&) noexcept=default
void setType(StringType stringType)
Definition: string.cpp:42
std::string sectionName
Definition: string.h:26
String(const String &)=default
void setFileOffset(std::uint64_t stringFileOffset)
Definition: string.cpp:47
void setContent(const std::string &stringContent)
Definition: string.cpp:62
StringType type
Definition: string.h:24
const std::string & getSectionName() const
Definition: string.cpp:22
StringType getType() const
Definition: string.cpp:12
void setSectionName(const std::string &sectionName)
Definition: string.cpp:52
const std::string & getContent() const
Definition: string.cpp:27
std::string content
Definition: string.h:27
std::uint64_t getFileOffset() const
Definition: string.cpp:17
bool isAscii() const
Definition: string.cpp:32
StringType
Definition: string.h:16
Definition: archive_wrapper.h:19