Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon
func_item_iterator_t Class Reference

Class to enumerate all function instructions and data sorted by addresses. More...

#include <funcs.hpp>

Public Member Functions

 func_item_iterator_t (func_t *pfn, ea_t _ea=BADADDR)
 
bool set (func_t *pfn, ea_t _ea=BADADDR)
 Set a function range. if pfn == nullptr then a segment range will be set.
 
bool set_range (ea_t ea1, ea_t ea2)
 Set an arbitrary range.
 
bool first (void)
 
bool last (void)
 
ea_t current (void) const
 
const range_tchunk (void) const
 
bool next (testf_t *func, void *ud)
 
bool prev (testf_t *func, void *ud)
 
bool next_addr (void)
 
bool next_head (void)
 
bool next_code (void)
 
bool next_data (void)
 
bool next_not_tail (void)
 
bool prev_addr (void)
 
bool prev_head (void)
 
bool prev_code (void)
 
bool prev_data (void)
 
bool prev_not_tail (void)
 
bool decode_prev_insn (insn_t *out)
 
bool decode_preceding_insn (eavec_t *visited, bool *p_farref, insn_t *out)
 
bool succ (testf_t *func, void *ud)
 Similar to next(), but succ() iterates the chunks from low to high addresses, while next() iterates through chunks starting at the function entry chunk.
 
bool succ_code (void)
 

Detailed Description

Class to enumerate all function instructions and data sorted by addresses.

The function entry chunk items are enumerated first regardless of their addresses

Sample code:

for ( bool ok=fii.set(pfn, ea); ok; ok=fii.next_addr() )
ea_t ea = fii.current();
....
Class to enumerate all function instructions and data sorted by addresses.
Definition: funcs.hpp:782
bool set(func_t *pfn, ea_t _ea=BADADDR)
Set a function range. if pfn == nullptr then a segment range will be set.
Definition: funcs.hpp:789

If 'ea' is not specified in the call to set(), then the enumeration starts at the function entry point. If 'pfn' is specified as nullptr then the set() function will fail, but it is still possible to use the class. In this case the iteration will be limited by the segment boundaries. It is also possible to enumerate addresses in an arbitrary range using set_range().


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