Ghidra 11.3.2
Ghidra internal decompiler documentation.
Loading...
Searching...
No Matches
ghidra::TaskList Class Reference

A list of address ranges that need to be converted to SSA form. More...

#include <heritage.hh>

Collaboration diagram for ghidra::TaskList:
[legend]

Public Types

typedef list< MemRange >::iterator iterator
 Iterator in the list.
 

Public Member Functions

void add (Address addr, int4 size, uint4 fl)
 Add a range to the list.
 
iterator insert (iterator pos, Address addr, int4 size, uint4 fl)
 Insert a disjoint range in the list.
 
iterator erase (iterator iter)
 Remove a particular range.
 
iterator begin (void)
 Get iterator to beginning of this list.
 
iterator end (void)
 Get iterator to end of this list.
 
void clear (void)
 Clear all ranges in the list.
 

Private Attributes

list< MemRangetasklist
 List of address ranges that needs to be processed.
 

Detailed Description

A list of address ranges that need to be converted to SSA form.

The disjoint list of ranges are built up and processed in a single pass. The container is fed a list of ranges that may be overlapping but are already in address order. It constructs a disjoint list by taking the union of overlapping ranges.

Member Function Documentation

◆ add()

void ghidra::TaskList::add ( Address  addr,
int4  size,
uint4  fl 
)

Add a range to the list.

Addresses fed to this method must already be sorted. If the given range intersects the last range in the list, the last range is extended to cover it. Otherwise the range is added as a new element to the end of the list. The given boolean properties are associated with any new element. If an old element is extended, any new boolean properties are ORed into the old element's properties.

Parameters
addris the starting address of the given range
sizeis the number of bytes in the given range
flare the given boolean properties to associate with the range

References ghidra::MemRange::addr, ghidra::MemRange::flags, ghidra::Address::overlap(), ghidra::MemRange::size, and tasklist.

Referenced by ghidra::Heritage::heritage().

◆ insert()

TaskList::iterator ghidra::TaskList::insert ( iterator  pos,
Address  addr,
int4  size,
uint4  fl 
)

Insert a disjoint range in the list.

This can be used to add a range anywhere in the list, but the new range must already be disjoint from ranges in the list.

Parameters
posis the position in the list before which the new range will be inserted
addris the starting address of the new range
sizeis the number of bytes in the new range
flis the boolean properties to be associated with the new range
Returns
an iterator to the new range

References tasklist.

Referenced by ghidra::Heritage::refinement().


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