text: /**
   * @file include/retdec/cpdetect/heuristics/elf_heuristics.h
   * @brief Definition of ElfHeuristics class.
   * @copyright (c) 2017 Avast Software, licensed under the MIT license
   */
  
  #ifndef RETDEC_CPDETECT_HEURISTICS_ELF_HEURISTICS_H
  #define RETDEC_CPDETECT_HEURISTICS_ELF_HEURISTICS_H
  
  #include "retdec/cpdetect/heuristics/heuristics.h"
  #include "retdec/fileformat/file_format/elf/elf_format.h"
  
  namespace retdec {
  namespace cpdetect {
  
  /**
   * ELF-specific heuristics
   */
  class ElfHeuristics : public Heuristics
  {
  	private:
  		/// parser of input ELF file
  		retdec::fileformat::ElfFormat &elfParser;
  
  		/// @name Detection methods
  		/// @{
  		void getUpxHeuristics();
  		void getNoteHeuristics();
  		void getBorlandKylixHeuristics();
  		void getDynamicEntriesHeuristics();
  		/// @}
  
  	protected:
  		/// @name Virtual methods
  		/// @{
  		virtual void getFormatSpecificCompilerHeuristics() override;
  		/// @}
  
  	public:
  		ElfHeuristics(
  				retdec::fileformat::ElfFormat &parser,
  				Search &searcher,
  				ToolInformation &toolInfo);
  };
  
  } // namespace cpdetect
  } // namespace retdec
  
  #endif
  