retdec
iterative_distribution_getter.h
Go to the documentation of this file.
1 
7 #ifndef FILEINFO_FILE_PRESENTATION_GETTERS_ITERATIVE_GETTER_ITERATIVE_DISTRIBUTION_GETTER_ITERATIVE_DISTRIBUTION_GETTER_H
8 #define FILEINFO_FILE_PRESENTATION_GETTERS_ITERATIVE_GETTER_ITERATIVE_DISTRIBUTION_GETTER_ITERATIVE_DISTRIBUTION_GETTER_H
9 
11 
12 namespace retdec {
13 namespace fileinfo {
14 
22 {
23  protected:
24  std::vector<std::vector<std::vector<std::string>>> records;
25  std::vector<std::size_t> distribution;
26  std::vector<std::string> commonHeaderDesc;
27  std::vector<std::vector<std::size_t>> extraDistribution;
28  std::vector<std::vector<std::string>> extraDesc;
29  std::vector<std::vector<bool>> distFlags;
30  std::vector<std::vector<bool>> hexMap;
31  std::vector<std::vector<std::size_t>> hexPadding;
32 
35  virtual bool loadRecord(std::size_t structIndex, std::size_t recIndex, std::vector<std::string> &record) = 0;
37 
40  void loadRecords();
42  public:
44 
47  std::size_t getDistribution(std::size_t structIndex, std::vector<std::size_t> &distr) const;
48  std::size_t getHeaderDesc(std::size_t structIndex, std::vector<std::string> &desc, std::vector<std::string> &abb) const;
49  void getHeader(std::size_t structIndex, std::string &header) const;
50  bool getDistributionFlags(std::size_t structIndex, std::vector<bool> &flags) const;
52 
55  virtual bool getRecord(std::size_t structIndex, std::size_t recIndex, std::vector<std::string> &record) const override;
57 
60  virtual bool getFlagDescriptors(std::size_t structIndex, std::vector<std::string> &desc, std::vector<std::string> &abbv) const = 0;
62 };
63 
64 } // namespace fileinfo
65 } // namespace retdec
66 
67 #endif
Definition: file_information.h:25
Definition: iterative_distribution_getter.h:22
std::size_t getHeaderDesc(std::size_t structIndex, std::vector< std::string > &desc, std::vector< std::string > &abb) const
Definition: iterative_distribution_getter.cpp:213
virtual bool getRecord(std::size_t structIndex, std::size_t recIndex, std::vector< std::string > &record) const override
Definition: iterative_distribution_getter.cpp:322
std::vector< std::vector< std::size_t > > hexPadding
padding of hexadecimal columns
Definition: iterative_distribution_getter.h:31
std::vector< std::vector< bool > > distFlags
distribution flags
Definition: iterative_distribution_getter.h:29
virtual bool loadRecord(std::size_t structIndex, std::size_t recIndex, std::vector< std::string > &record)=0
bool getDistributionFlags(std::size_t structIndex, std::vector< bool > &flags) const
Definition: iterative_distribution_getter.cpp:305
std::vector< std::vector< std::string > > extraDesc
description of extra header elements for each structure
Definition: iterative_distribution_getter.h:28
std::vector< std::size_t > distribution
distribution of header (common for all structures)
Definition: iterative_distribution_getter.h:25
void getHeader(std::size_t structIndex, std::string &header) const
Definition: iterative_distribution_getter.cpp:259
std::size_t getDistribution(std::size_t structIndex, std::vector< std::size_t > &distr) const
Definition: iterative_distribution_getter.cpp:169
std::vector< std::vector< std::size_t > > extraDistribution
distribution of extra elements for each structure
Definition: iterative_distribution_getter.h:27
virtual bool getFlagDescriptors(std::size_t structIndex, std::vector< std::string > &desc, std::vector< std::string > &abbv) const =0
IterativeDistributionGetter(FileInformation &fileInfo)
Definition: iterative_distribution_getter.cpp:51
std::vector< std::vector< std::vector< std::string > > > records
records from all structures
Definition: iterative_distribution_getter.h:24
std::vector< std::vector< bool > > hexMap
map of hexadecimal elements (columns)
Definition: iterative_distribution_getter.h:30
std::vector< std::string > commonHeaderDesc
description of header elements (common for all structures)
Definition: iterative_distribution_getter.h:26
void loadRecords()
Definition: iterative_distribution_getter.cpp:95
Definition: iterative_getter.h:22
Definition of IterativeGetter class.
Definition: archive_wrapper.h:19