IDA C++ SDK 9.2
|
Ctree item: statement. More...
#include <hexrays.hpp>
Public Member Functions | |
cinsn_t () | |
cinsn_t (const cinsn_t &r) | |
void | swap (cinsn_t &r) |
cinsn_t & | operator= (const cinsn_t &r) |
cinsn_t &hexapi | assign (const cinsn_t &r) |
DECLARE_COMPARISONS (cinsn_t) | |
~cinsn_t () | |
void hexapi | replace_by (cinsn_t *r) |
Replace the statement. | |
void hexapi | cleanup () |
Cleanup the statement. | |
void | zero () |
Overwrite with zeroes without cleaning memory or deleting children. | |
cinsn_t &hexapi | new_insn (ea_t insn_ea) |
Create a new statement. | |
cif_t &hexapi | create_if (cexpr_t *cnd) |
Create a new if-statement. | |
void hexapi | print (int indent, vc_printer_t &vp, use_curly_t use_curly=CALC_CURLY_BRACES) const |
Print the statement into many lines. | |
void hexapi | print1 (qstring *vout, const cfunc_t *func) const |
Print the statement into one line. | |
bool hexapi | is_ordinary_flow () const |
Check if the statement passes execution to the next statement. | |
bool hexapi | contains_insn (ctype_t type, int times=1) const |
Check if the statement contains a statement of the specified type. | |
bool hexapi | collect_free_breaks (cinsnptrvec_t *breaks) |
Collect free break statements. | |
bool hexapi | collect_free_continues (cinsnptrvec_t *continues) |
Collect free continue statements. | |
bool | contains_free_break () const |
Check if the statement has free break statements. | |
bool | contains_free_continue () const |
Check if the statement has free continue statements. | |
const char *hexapi | dstr () const |
Public Member Functions inherited from citem_t | |
citem_t (ctype_t o=cot_empty) | |
void | swap (citem_t &r) |
Swap two citem_t. | |
bool | is_expr () const |
Is an expression? | |
bool hexapi | contains_expr (const cexpr_t *e) const |
Does the item contain an expression? | |
bool hexapi | contains_label () const |
Does the item contain a label? | |
const citem_t *hexapi | find_parent_of (const citem_t *item) const |
Find parent of the specified item. | |
citem_t * | find_parent_of (const citem_t *item) |
citem_t *hexapi | find_closest_addr (ea_t _ea) |
void | print1 (qstring *vout, const cfunc_t *func) const |
Print item into one line. | |
~citem_t () |
Public Attributes | |
union { | |
cblock_t * cblock | |
details of block-statement More... | |
cexpr_t * cexpr | |
details of expression-statement More... | |
cif_t * cif | |
details of if-statement More... | |
cfor_t * cfor | |
details of for-statement More... | |
cwhile_t * cwhile | |
details of while-statement More... | |
cdo_t * cdo | |
details of do-statement More... | |
cswitch_t * cswitch | |
details of switch-statement More... | |
creturn_t * creturn | |
details of return-statement More... | |
cgoto_t * cgoto | |
details of goto-statement More... | |
casm_t * casm | |
details of asm-statement More... | |
ctry_t * ctry | |
details of try-statement More... | |
cthrow_t * cthrow | |
details of throw-statement More... | |
}; | |
Public Attributes inherited from citem_t | |
ea_t | ea = BADADDR |
address that corresponds to the item. may be BADADDR | |
ctype_t | op |
item type | |
int | label_num = -1 |
label number. | |
int | index = -1 |
an index in cfunc_t::treeitems. |
Ctree item: statement.
Depending on the exact statement type, various fields of the union are used.
|
inline |
|
inline |
|
inline |
cinsn_t::DECLARE_COMPARISONS | ( | cinsn_t | ) |
Replace the statement.
The children of the statement are abandoned (not freed). The statement pointed by 'r' is moved to 'this' statement
r | the source statement. It is deleted after being copied |
|
inline |
Cleanup the statement.
This function properly deletes all children and sets the item type to cit_empty.
|
inline |
Overwrite with zeroes without cleaning memory or deleting children.
Create a new statement.
The current statement must be a block. The new statement will be appended to it.
insn_ea | statement address |
Create a new if-statement.
The current statement must be a block. The new statement will be appended to it.
cnd | if condition. It will be deleted after being copied. |
|
inline |
Print the statement into many lines.
indent | indention (number of spaces) for the statement |
vp | printer helper class which will receive the generated text. |
use_curly | if the statement is a block, how should curly braces be printed. |
Print the statement into one line.
Currently this function is not available.
vout | output buffer |
func | parent function. This argument is used to find out the referenced variable names. |
|
inline |
Check if the statement passes execution to the next statement.
Check if the statement contains a statement of the specified type.
type | statement opcode to look for |
times | how many times TYPE should be present |
|
inline |
Collect free break
statements.
This function finds all free break
statements within the current statement. A break
statement is free if it does not have a loop or switch parent that that is also within the current statement.
breaks | pointer to the variable where the vector of all found free break statements is returned. This argument can be nullptr. |
break
statements have been found
|
inline |
Collect free continue
statements.
This function finds all free continue
statements within the current statement. A continue
statement is free if it does not have a loop parent that that is also within the current statement.
continues | pointer to the variable where the vector of all found free continue statements is returned. This argument can be nullptr. |
continue
statements have been found
|
inline |
Check if the statement has free break
statements.
|
inline |
Check if the statement has free continue
statements.
|
inline |
cblock_t* cinsn_t::cblock |
details of block-statement
cexpr_t* cinsn_t::cexpr |
details of expression-statement
cif_t* cinsn_t::cif |
details of if-statement
cfor_t* cinsn_t::cfor |
details of for-statement
cwhile_t* cinsn_t::cwhile |
details of while-statement
cdo_t* cinsn_t::cdo |
details of do-statement
cswitch_t* cinsn_t::cswitch |
details of switch-statement
creturn_t* cinsn_t::creturn |
details of return-statement
cgoto_t* cinsn_t::cgoto |
details of goto-statement
casm_t* cinsn_t::casm |
details of asm-statement
ctry_t* cinsn_t::ctry |
details of try-statement
cthrow_t* cinsn_t::cthrow |
details of throw-statement
union { ... } cinsn_t |