Module index

Module ida_range

Contains the definition of range_t.

A range is a non-empty continuous range of addresses (specified by its start and end addresses, the end address is excluded from the range).

Ranges are stored in the Btree part of the IDA database. To learn more about Btrees (Balanced Trees): \link{http://www.bluerwhite.org/btree/}

Global variables

var RANGE_KIND_FUNC

func_t

var RANGE_KIND_HIDDEN_RANGE

hidden_range_t

var RANGE_KIND_SEGMENT

segment_t

Functions

def range_t_print(cb: range_t)

range_t_print(cb) -> str Helper function. Should not be called directly!

@param cb: range_t const *

Classes

class array_of_rangesets (*args)

Proxy of C++ qvector< rangeset_t > class.

init(self) -> array_of_rangesets init(self, x) -> array_of_rangesets

@param x: qvector< rangeset_t > const &

Instance variables

var thisown

The membership flag

Methods

def add_unique(self, x: rangeset_t) ‑> bool

add_unique(self, x) -> bool

@param x: rangeset_t const &

def at(self, _idx: size_t)

at(self, _idx) -> rangeset_t

@param _idx: size_t

def back(self)
def begin(self, *args)

begin(self) -> rangeset_t

def capacity(self)

capacity(self) -> size_t

def clear(self)

clear(self)

def empty(self) ‑> bool

empty(self) -> bool

def end(self, *args)

end(self) -> rangeset_t

def erase(self, *args)

erase(self, it) -> rangeset_t

@param it: qvector< rangeset_t >::iterator

erase(self, first, last) -> rangeset_t

@param first: qvector< rangeset_t >::iterator @param last: qvector< rangeset_t >::iterator

def extract(self)

extract(self) -> rangeset_t

def find(self, *args)

find(self, x) -> rangeset_t

@param x: rangeset_t const &

def front(self)
def grow(self, *args)

grow(self, x=rangeset_t())

@param x: rangeset_t const &

def has(self, x: rangeset_t) ‑> bool

has(self, x) -> bool

@param x: rangeset_t const &

def inject(self, s: rangeset_t, len: size_t)

inject(self, s, len)

@param s: rangeset_t * @param len: size_t

def insert(self, it: rangeset_t, x: rangeset_t)

insert(self, it, x) -> rangeset_t

@param it: qvector< rangeset_t >::iterator @param x: rangeset_t const &

def pop_back(self)

pop_back(self)

def push_back(self, *args)

push_back(self, x)

@param x: rangeset_t const &

push_back(self) -> rangeset_t

def qclear(self)

qclear(self)

def reserve(self, cnt: size_t)

reserve(self, cnt)

@param cnt: size_t

def resize(self, *args)

resize(self, _newsize, x)

@param _newsize: size_t @param x: rangeset_t const &

resize(self, _newsize)

@param _newsize: size_t

def size(self)

size(self) -> size_t

def swap(self, r: array_of_rangesets)

swap(self, r)

@param r: qvector< rangeset_t > &

def truncate(self)

truncate(self)

class range_t (ea1: ea_t = 0, ea2: ea_t = 0)

Proxy of C++ range_t class.

init(self, ea1=0, ea2=0) -> range_t

@param ea1: ea_t @param ea2: ea_t

Subclasses

Instance variables

var end_ea : ea_t

end_ea excluded

var start_ea : ea_t

start_ea included

var thisown

The membership flag

Methods

def clear(self)

clear(self) Set start_ea, end_ea to 0.

def compare(self, r: range_t) ‑> int

compare(self, r) -> int

@param r: range_t const &

def contains(self, *args) ‑> bool

contains(self, ea) -> bool Is every ea in 'r' also in this range_t?

@param ea: ea_t

contains(self, r) -> bool

@param r: range_t const &

def empty(self) ‑> bool

empty(self) -> bool Is the size of the range_t <= 0?

def extend(self, ea: ea_t)

extend(self, ea) Ensure that the range_t includes 'ea'.

@param ea: (C++: ea_t)

def intersect(self, r: range_t)

intersect(self, r) Assign the range_t to the intersection between the range_t and 'r'.

@param r: (C++: const range_t &) range_t const &

def overlaps(self, r: range_t) ‑> bool

overlaps(self, r) -> bool Is there an ea in 'r' that is also in this range_t?

@param r: (C++: const range_t &) range_t const &

def size(self)

size(self) -> asize_t Get end_ea - start_ea.

class rangeset_t (*args)

Proxy of C++ rangeset_t class.

init(self) -> rangeset_t init(self, range) -> rangeset_t

@param range: range_t const &

init(self, ivs) -> rangeset_t

@param ivs: rangeset_t const &

Instance variables

var thisown

The membership flag

Methods

def add(self, *args) ‑> bool

add(self, range) -> bool Add each element of 'aset' to the set.

@param range: range_t const &

@return: false if no elements were added (the set was unchanged) add(self, start, _end) -> bool

@param start: ea_t @param _end: ea_t

add(self, aset) -> bool

@param aset: rangeset_t const &

def begin(self, *args)

begin(self) -> range_t Get an iterator that points to the first element in the set.

def cached_range(self)

cached_range(self) -> range_t When searching the rangeset, we keep a cached element to help speed up searches.

@return: a pointer to the cached element

def clear(self)

clear(self) Delete all elements from the set. See qvector::clear()

def contains(self, *args) ‑> bool

contains(self, ea) -> bool Is every element in 'aset' contained in an element of this rangeset?. See range_t::contains(range_t)

@param ea: ea_t

contains(self, aset) -> bool

@param aset: rangeset_t const &

def empty(self) ‑> bool

empty(self) -> bool Does the set have zero elements.

def end(self, *args)

end(self) -> range_t Get an iterator that points to the end of the set. (This is NOT the last element)

def find_range(self, ea: ea_t)

find_range(self, ea) -> range_t Get the element from the set that contains 'ea'.

@param ea: (C++: ea_t) @return: nullptr if there is no such element

def getrange(self, idx: int)

getrange(self, idx) -> range_t Get the range_t at index 'idx'.

@param idx: (C++: int)

def has_common(self, *args) ‑> bool

has_common(self, range) -> bool Does any element of 'aset' overlap with an element in this rangeset?. See range_t::overlaps()

@param range: range_t const &

has_common(self, aset) -> bool

@param aset: rangeset_t const &

def includes(self, range: range_t) ‑> bool

includes(self, range) -> bool Is every ea in 'range' contained in the rangeset?

@param range: (C++: const range_t &) range_t const &

def intersect(self, aset: rangeset_t) ‑> bool

intersect(self, aset) -> bool Set the rangeset to its intersection with 'aset'.

@param aset: (C++: const rangeset_t &) rangeset_t const & @return: false if the set was unchanged

def is_equal(self, aset: rangeset_t) ‑> bool

is_equal(self, aset) -> bool Do this rangeset and 'aset' have identical elements?

@param aset: (C++: const rangeset_t &) rangeset_t const &

def is_subset_of(self, aset: rangeset_t) ‑> bool

is_subset_of(self, aset) -> bool Is every element in the rangeset contained in an element of 'aset'?

@param aset: (C++: const rangeset_t &) rangeset_t const &

def lastrange(self)

lastrange(self) -> range_t Get the last range_t in the set.

def next_addr(self, ea: ea_t)

next_addr(self, ea) -> ea_t Get the smallest ea_t value greater than 'ea' contained in the rangeset.

@param ea: (C++: ea_t)

def next_range(self, ea: ea_t)

next_range(self, ea) -> ea_t Get the smallest ea_t value greater than 'ea' that is not in the same range as 'ea'.

@param ea: (C++: ea_t)

def nranges(self)

nranges(self) -> size_t Get the number of range_t elements in the set.

def prev_addr(self, ea: ea_t)

prev_addr(self, ea) -> ea_t Get the largest ea_t value less than 'ea' contained in the rangeset.

@param ea: (C++: ea_t)

def prev_range(self, ea: ea_t)

prev_range(self, ea) -> ea_t Get the largest ea_t value less than 'ea' that is not in the same range as 'ea'.

@param ea: (C++: ea_t)

def sub(self, *args) ‑> bool

sub(self, range) -> bool Subtract each range in 'aset' from the set

@param range: range_t const &

@return: false if nothing was subtracted (the set was unchanged) sub(self, ea) -> bool

@param ea: ea_t

sub(self, aset) -> bool

@param aset: rangeset_t const &

def swap(self, r: rangeset_t)

swap(self, r) Set this = 'r' and 'r' = this. See qvector::swap()

@param r: (C++: rangeset_t &)

class rangevec_base_t (*args)

Proxy of C++ qvector< range_t > class.

init(self) -> rangevec_base_t init(self, x) -> rangevec_base_t

@param x: qvector< range_t > const &

Subclasses

Instance variables

var thisown

The membership flag

Methods

def add_unique(self, x: range_t) ‑> bool

add_unique(self, x) -> bool

@param x: range_t const &

def at(self, _idx: size_t)

at(self, _idx) -> range_t

@param _idx: size_t

def back(self)
def begin(self, *args)

begin(self) -> range_t

def capacity(self)

capacity(self) -> size_t

def clear(self)

clear(self)

def empty(self) ‑> bool

empty(self) -> bool

def end(self, *args)

end(self) -> range_t

def erase(self, *args)

erase(self, it) -> range_t

@param it: qvector< range_t >::iterator

erase(self, first, last) -> range_t

@param first: qvector< range_t >::iterator @param last: qvector< range_t >::iterator

def extract(self)

extract(self) -> range_t

def find(self, *args)

find(self, x) -> range_t

@param x: range_t const &

def front(self)
def grow(self, *args)

grow(self, x=range_t())

@param x: range_t const &

def has(self, x: range_t) ‑> bool

has(self, x) -> bool

@param x: range_t const &

def inject(self, s: range_t, len: size_t)

inject(self, s, len)

@param s: range_t * @param len: size_t

def insert(self, it: range_t, x: range_t)

insert(self, it, x) -> range_t

@param it: qvector< range_t >::iterator @param x: range_t const &

def pop_back(self)

pop_back(self)

def push_back(self, *args)

push_back(self, x)

@param x: range_t const &

push_back(self) -> range_t

def qclear(self)

qclear(self)

def reserve(self, cnt: size_t)

reserve(self, cnt)

@param cnt: size_t

def resize(self, *args)

resize(self, _newsize, x)

@param _newsize: size_t @param x: range_t const &

resize(self, _newsize)

@param _newsize: size_t

def size(self)

size(self) -> size_t

def swap(self, r: rangevec_base_t)

swap(self, r)

@param r: qvector< range_t > &

def truncate(self)

truncate(self)

class rangevec_t

Proxy of C++ rangevec_t class.

init(self) -> rangevec_t

Ancestors

Subclasses

Inherited members