retdec
import_table.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_FILEFORMAT_TYPES_IMPORT_TABLE_IMPORT_TABLE_H
8 #define RETDEC_FILEFORMAT_TYPES_IMPORT_TABLE_IMPORT_TABLE_H
9 
10 #include <memory>
11 #include <vector>
12 
14 
15 namespace retdec {
16 namespace fileformat {
17 
22 {
23  private:
24  using importsIterator = std::vector<std::unique_ptr<Import>>::const_iterator;
25  std::vector<std::string> libraries;
26  std::vector<std::string> missingDeps;
27  std::vector<std::unique_ptr<Import>> imports;
28  std::string impHashCrc32;
29  std::string impHashMd5;
30  std::string impHashSha256;
31  public:
34  std::size_t getNumberOfLibraries() const;
35  std::size_t getNumberOfImports() const;
36  std::size_t getNumberOfImportsInLibrary(std::size_t libraryIndex) const;
37  std::size_t getNumberOfImportsInLibrary(const std::string &name) const;
38  std::size_t getNumberOfImportsInLibraryCaseInsensitive(const std::string &name) const;
39  const std::string& getImphashCrc32() const;
40  const std::string& getImphashMd5() const;
41  const std::string& getImphashSha256() const;
42  const std::vector<std::string> & getMissingDependencies() const;
43 
44  std::string getLibrary(std::size_t libraryIndex) const;
45  const Import* getImport(std::size_t importIndex) const;
46  const Import* getImport(const std::string &name) const;
47  const Import* getImportOnAddress(unsigned long long address) const;
49 
52  importsIterator begin() const;
53  importsIterator end() const;
55 
58  void computeHashes();
59  void clear();
60  void addLibrary(std::string name, bool missingDependency = false);
61  void addImport(std::unique_ptr<Import>&& import);
62  bool hasLibraries() const;
63  bool hasLibrary(const std::string &name) const;
64  bool hasLibraryCaseInsensitive(const std::string &name) const;
65  bool hasImports() const;
66  bool hasImport(const std::string &name) const;
67  bool hasImport(unsigned long long address) const;
68  bool invalidImpHash() const;
69  bool empty() const;
70  void dump(std::string &dumpTable) const;
71  void dumpLibrary(std::size_t libraryIndex, std::string &libraryDump) const;
73 };
74 
75 } // namespace fileformat
76 } // namespace retdec
77 
78 #endif
Definition: import_table.h:22
void dumpLibrary(std::size_t libraryIndex, std::string &libraryDump) const
Definition: import_table.cpp:1009
const std::string & getImphashSha256() const
Definition: import_table.cpp:673
std::string impHashCrc32
imphash CRC32
Definition: import_table.h:28
std::size_t getNumberOfImportsInLibrary(std::size_t libraryIndex) const
Definition: import_table.cpp:594
std::vector< std::unique_ptr< Import > > imports
stored imports
Definition: import_table.h:27
const std::string & getImphashMd5() const
Definition: import_table.cpp:664
void clear()
Definition: import_table.cpp:834
std::size_t getNumberOfImports() const
Definition: import_table.cpp:584
void addLibrary(std::string name, bool missingDependency=false)
Definition: import_table.cpp:850
importsIterator begin() const
Definition: import_table.cpp:747
const Import * getImportOnAddress(unsigned long long address) const
Definition: import_table.cpp:730
bool empty() const
Definition: import_table.cpp:946
std::vector< std::string > missingDeps
missing dependencies
Definition: import_table.h:26
bool hasLibraryCaseInsensitive(const std::string &name) const
Definition: import_table.cpp:890
bool invalidImpHash() const
Definition: import_table.cpp:935
std::size_t getNumberOfImportsInLibraryCaseInsensitive(const std::string &name) const
Definition: import_table.cpp:636
bool hasLibrary(const std::string &name) const
Definition: import_table.cpp:880
std::string impHashSha256
imphash SHA256
Definition: import_table.h:30
bool hasImport(const std::string &name) const
Definition: import_table.cpp:917
std::size_t getNumberOfLibraries() const
Definition: import_table.cpp:575
const std::vector< std::string > & getMissingDependencies() const
Definition: import_table.cpp:682
const std::string & getImphashCrc32() const
Definition: import_table.cpp:655
std::vector< std::string > libraries
name of libraries
Definition: import_table.h:25
void dump(std::string &dumpTable) const
Definition: import_table.cpp:955
bool hasLibraries() const
Definition: import_table.cpp:870
bool hasImports() const
Definition: import_table.cpp:907
std::string getLibrary(std::size_t libraryIndex) const
Definition: import_table.cpp:692
const Import * getImport(std::size_t importIndex) const
Definition: import_table.cpp:702
std::string impHashMd5
imphash MD5
Definition: import_table.h:29
std::vector< std::unique_ptr< Import > >::const_iterator importsIterator
Definition: import_table.h:24
void computeHashes()
Definition: import_table.cpp:764
void addImport(std::unique_ptr< Import > &&import)
Definition: import_table.cpp:861
importsIterator end() const
Definition: import_table.cpp:756
Definition: import.h:19
Class for one import.
Definition: archive_wrapper.h:19