retdec
Public Member Functions | Protected Attributes | List of all members
retdec::fileinfo::IterativeGetter Class Referenceabstract

#include <iterative_getter.h>

Inheritance diagram for retdec::fileinfo::IterativeGetter:
Inheritance graph
[legend]
Collaboration diagram for retdec::fileinfo::IterativeGetter:
Collaboration graph
[legend]

Public Member Functions

 IterativeGetter (FileInformation &fileInfo)
 
Getters
std::size_t getNumberOfStructures () const
 
std::size_t getNumberOfStoredRecords (std::size_t structIndex) const
 
std::size_t getHeaderElements (std::size_t structIndex, std::vector< std::string > &elements) const
 
void getTitle (std::string &structTitle) const
 
Other methods
bool hasBasicInfo (std::size_t structIndex) const
 
Pure virtual methods
virtual std::size_t getBasicInfo (std::size_t structIndex, std::vector< std::string > &desc, std::vector< std::string > &info) const =0
 
virtual bool getRecord (std::size_t structIndex, std::size_t recIndex, std::vector< std::string > &record) const =0
 

Protected Attributes

FileInformationfileinfo
 information about file More...
 
std::size_t numberOfStructures
 number of presented structures (e.g. number of symbol tables) More...
 
std::vector< std::size_t > numberOfStoredRecords
 number of records in each structure More...
 
std::vector< std::string > commonHeaderElements
 parts of header (common for all structures) More...
 
std::vector< std::size_t > numberOfExtraElements
 number of extra elements in each structure More...
 
std::vector< std::vector< std::string > > extraHeaderElements
 parts of header (specific for each structure) More...
 
std::string title
 title of presented structure More...
 

Detailed Description

Abstract class for loading information about file.

This class enable iterative queries to a set of items (e.g. queries to symbols from symbol tables).

Constructor & Destructor Documentation

◆ IterativeGetter()

retdec::fileinfo::IterativeGetter::IterativeGetter ( FileInformation fileInfo)

Constructor

Parameters
fileInfoInformation about file

Constructor in subclass must initialize commonHeaderElements, title, numberOfStructures, numberOfStoredRecords, extraHeaderElements and numberOfExtraElements.

Constructor in subclass must ensure that numberOfStoredRecords and numberOfExtraElements contains exactly numberOfStructures elements.

Constructor in subclass must ensure that each element in extraHeaderElements contains exactly as many elements as numberOfExtraElements[i], where i is index of extraHeaderElements and numberOfExtraElements.

Member Function Documentation

◆ getBasicInfo()

std::size_t retdec::fileinfo::IterativeGetter::getBasicInfo ( std::size_t  structIndex,
std::vector< std::string > &  desc,
std::vector< std::string > &  info 
) const
pure virtual

Get basic information about presented structure

Parameters
structIndexIndex of selected structure (indexed from 0)
descVector for save descriptions of information
infoVector for save information about file
Returns
Number of loaded information (this is equal to number of elements in desc and in info)

Before loading information, everything from vectors desc and info is deleted. If structure does not support this feature or structIndex is out of range, method returns 0 and vectors are left unchanged.

Implemented in retdec::fileinfo::TypeRefTableJsonGetter, retdec::fileinfo::SymbolTablesJsonGetter, retdec::fileinfo::StringsJsonGetter, retdec::fileinfo::SegmentJsonGetter, retdec::fileinfo::SectionJsonGetter, retdec::fileinfo::RichHeaderJsonGetter, retdec::fileinfo::ResourceJsonGetter, retdec::fileinfo::RelocationTablesJsonGetter, retdec::fileinfo::MissingDepsJsonGetter, retdec::fileinfo::LoaderInfoJsonGetter, retdec::fileinfo::ImportTableJsonGetter, retdec::fileinfo::ExportTableJsonGetter, retdec::fileinfo::DynamicSectionsJsonGetter, retdec::fileinfo::DataDirectoryJsonGetter, retdec::fileinfo::AnomaliesJsonGetter, retdec::fileinfo::CertificateTablePlainGetter, retdec::fileinfo::VisualBasicExternTablePlainGetter, retdec::fileinfo::VersionInfoStringTablePlainGetter, retdec::fileinfo::VersionInfoLanguageTablePlainGetter, retdec::fileinfo::TypeRefTablePlainGetter, retdec::fileinfo::TlsInfoPlainGetter, retdec::fileinfo::SymbolTablesPlainGetter, retdec::fileinfo::StringsPlainGetter, retdec::fileinfo::SegmentPlainGetter, retdec::fileinfo::SectionPlainGetter, retdec::fileinfo::RichHeaderPlainGetter, retdec::fileinfo::ResourcePlainGetter, retdec::fileinfo::RelocationTablesPlainGetter, retdec::fileinfo::PatternMatchesPlainGetter, retdec::fileinfo::MissingDepsPlainGetter, retdec::fileinfo::LoaderInfoPlainGetter, retdec::fileinfo::ImportTablePlainGetter, retdec::fileinfo::ExportTablePlainGetter, retdec::fileinfo::ElfNotesPlainGetter, retdec::fileinfo::ElfCoreMapPlainGetter, retdec::fileinfo::ElfAuxVPlainGetter, retdec::fileinfo::DynamicSectionsPlainGetter, retdec::fileinfo::DataDirectoryPlainGetter, and retdec::fileinfo::AnomaliesPlainGetter.

◆ getHeaderElements()

std::size_t retdec::fileinfo::IterativeGetter::getHeaderElements ( std::size_t  structIndex,
std::vector< std::string > &  elements 
) const

Get elements of header

Parameters
structIndexIndex of selected structure (indexed from 0)
elementsVector for save elements. Into this vector are stored common elements of all structures a subsequently extra elements for selected structure.
Returns
Number of stored elements

Before loading elements, everything from vector elements is deleted. If structIndex is out of range, method returns 0 and elements is left unchanged.

◆ getNumberOfStoredRecords()

std::size_t retdec::fileinfo::IterativeGetter::getNumberOfStoredRecords ( std::size_t  structIndex) const

Get number of stored records in selected structure

Parameters
structIndexIndex of selected structure (indexed from 0)
Returns
Number of stored records in selected structure

If structIndex is out of range, method returns 0. If structure does not contain any records, value 0 will be returned for a valid index also.

◆ getNumberOfStructures()

std::size_t retdec::fileinfo::IterativeGetter::getNumberOfStructures ( ) const

Get number of stored structures (e.g. number of symbol tables)

Returns
Number of stored structures

◆ getRecord()

bool retdec::fileinfo::IterativeGetter::getRecord ( std::size_t  structIndex,
std::size_t  recIndex,
std::vector< std::string > &  record 
) const
pure virtual

Get one record from structure

Parameters
structIndexIndex of selected structure (indexed from 0)
recIndexIndex of record in selected structure (indexed from 0)
recordVector for save record. At end of vector are stored special additional information, if these information are present. Number and semantics of additional information may be different for every separate structure.
Returns
true if record was successfully saved, false otherwise

Before loading record, everything from vector record is deleted.

If method returns true, record contains as many elements as vector returned by the method getHeaderElements(structIndex).

If structIndex or recIndex is out of range, method returns false.

Implemented in retdec::fileinfo::TypeRefTableJsonGetter, retdec::fileinfo::SymbolTablesJsonGetter, retdec::fileinfo::StringsJsonGetter, retdec::fileinfo::SegmentJsonGetter, retdec::fileinfo::SectionJsonGetter, retdec::fileinfo::RichHeaderJsonGetter, retdec::fileinfo::ResourceJsonGetter, retdec::fileinfo::RelocationTablesJsonGetter, retdec::fileinfo::MissingDepsJsonGetter, retdec::fileinfo::LoaderInfoJsonGetter, retdec::fileinfo::ImportTableJsonGetter, retdec::fileinfo::ExportTableJsonGetter, retdec::fileinfo::DynamicSectionsJsonGetter, retdec::fileinfo::DataDirectoryJsonGetter, retdec::fileinfo::AnomaliesJsonGetter, retdec::fileinfo::CertificateTablePlainGetter, and retdec::fileinfo::IterativeDistributionGetter.

◆ getTitle()

void retdec::fileinfo::IterativeGetter::getTitle ( std::string &  structTitle) const

Get title of presented structure

Parameters
structTitleInto this parameter the title is stored

◆ hasBasicInfo()

bool retdec::fileinfo::IterativeGetter::hasBasicInfo ( std::size_t  structIndex) const

Check if structure has some basic information

Parameters
structIndexIndex of selected structure (indexed from 0)
Returns
true if structure has at least one basic information, false otherwise

Member Data Documentation

◆ commonHeaderElements

std::vector<std::string> retdec::fileinfo::IterativeGetter::commonHeaderElements
protected

parts of header (common for all structures)

◆ extraHeaderElements

std::vector<std::vector<std::string> > retdec::fileinfo::IterativeGetter::extraHeaderElements
protected

parts of header (specific for each structure)

◆ fileinfo

FileInformation& retdec::fileinfo::IterativeGetter::fileinfo
protected

information about file

◆ numberOfExtraElements

std::vector<std::size_t> retdec::fileinfo::IterativeGetter::numberOfExtraElements
protected

number of extra elements in each structure

◆ numberOfStoredRecords

std::vector<std::size_t> retdec::fileinfo::IterativeGetter::numberOfStoredRecords
protected

number of records in each structure

◆ numberOfStructures

std::size_t retdec::fileinfo::IterativeGetter::numberOfStructures
protected

number of presented structures (e.g. number of symbol tables)

◆ title

std::string retdec::fileinfo::IterativeGetter::title
protected

title of presented structure


The documentation for this class was generated from the following files: