cinsn_t Struct Reference

Ctree element: statement. More...

Inheritance diagram for cinsn_t:
citem_t ccase_t

Public Member Functions

 cinsn_t (const cinsn_t &r)
 
void swap (cinsn_t &r)
 
cinsn_toperator= (const cinsn_t &r)
 
cinsn_tassign (const cinsn_t &r)
 
 DECLARE_COMPARISONS (cinsn_t)
 
void replace_by (cinsn_t *r)
 Replace the statement. More...
 
void cleanup (void)
 Cleanup the statement. More...
 
void zero (void)
 Overwrite with zeroes without cleaning memory or deleting children.
 
cinsn_tnew_insn (ea_t insn_ea)
 Create a new statement. More...
 
cif_tcreate_if (cexpr_t *cnd)
 Create a new if-statement. More...
 
void print (int indent, vc_printer_t &vp, use_curly_t use_curly=CALC_CURLY_BRACES) const
 Print the statement into many lines. More...
 
void print1 (qstring *vout, const cfunc_t *func) const
 Print the statement into one line. More...
 
bool is_ordinary_flow (void) const
 Check if the statement passes execution to the next statement. More...
 
bool contains_insn (ctype_t type, int times=1) const
 Check if the statement contains a statement of the specified type. More...
 
bool collect_free_breaks (cinsnptrvec_t *breaks)
 Collect free break statements. More...
 
bool collect_free_continues (cinsnptrvec_t *continues)
 Collect free continue statements. More...
 
bool contains_free_break (void) const
 Check if the statement has free break statements.
 
bool contains_free_continue (void) const
 Check if the statement has free continue statements.
 
- Public Member Functions inherited from citem_t
 citem_t (ctype_t o)
 
void swap (citem_t &r)
 Swap two citem_t.
 
bool is_expr (void) const
 Is an expression?
 
bool contains_label (void) const
 Does the item contain a label?
 
const citem_tfind_parent_of (const citem_t *sitem) const
 Find parent of the specified item. More...
 
citem_tfind_parent_of (const citem_t *item)
 
citem_tfind_closest_addr (ea_t _ea)
 
void print1 (qstring *vout, const cfunc_t *func) const
 Print item into one line. More...
 

Public Attributes

union {
   cblock_t *   cblock
 details of block-statement
 
   cexpr_t *   cexpr
 details of expression-statement
 
   cif_t *   cif
 details of if-statement
 
   cfor_t *   cfor
 details of for-statement
 
   cwhile_t *   cwhile
 details of while-statement
 
   cdo_t *   cdo
 details of do-statement
 
   cswitch_t *   cswitch
 details of switch-statement
 
   creturn_t *   creturn
 details of return-statement
 
   cgoto_t *   cgoto
 details of goto-statement
 
   casm_t *   casm
 details of asm-statement
 
}; 
 
- Public Attributes inherited from citem_t
ea_t ea
 address that corresponds to the item
 
ctype_t op
 element type
 
int label_num
 label number. More...
 
int index
 item index. meaningful only after print_func()
 

Detailed Description

Ctree element: statement.

Depending on the exact statement type, various fields of the union are used.

Examples:
hexrays_sample3.cpp, hexrays_sample5.cpp, and hexrays_sample7.cpp.

Definition at line 4010 of file hexrays.hpp.

Member Function Documentation

◆ cleanup()

void cinsn_t::cleanup ( void  )

Cleanup the statement.

This function properly deletes all children and sets the item type to cit_empty.

Definition at line 8607 of file hexrays.hpp.

References hexdsp.

◆ collect_free_breaks()

bool cinsn_t::collect_free_breaks ( cinsnptrvec_t breaks)

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.

Parameters
breakspointer to the variable where the vector of all found free break statements is returned. This argument can be NULL.
Returns
true if some free break statements have been found

Definition at line 8649 of file hexrays.hpp.

References hexdsp.

◆ collect_free_continues()

bool cinsn_t::collect_free_continues ( cinsnptrvec_t continues)

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.

Parameters
continuespointer to the variable where the vector of all found free continue statements is returned. This argument can be NULL.
Returns
true if some free continue statements have been found

Definition at line 8655 of file hexrays.hpp.

References hexdsp.

◆ contains_insn()

bool cinsn_t::contains_insn ( ctype_t  type,
int  times = 1 
) const

Check if the statement contains a statement of the specified type.

Parameters
typestatement opcode to look for
timeshow many times TYPE should be present
Returns
true if the statement has at least TIMES children with opcode == TYPE

Definition at line 8643 of file hexrays.hpp.

References hexdsp.

◆ create_if()

cif_t & cinsn_t::create_if ( cexpr_t cnd)

Create a new if-statement.

The current statement must be a block. The new statement will be appended to it.

Parameters
cndif condition. It will be deleted after being copied.

Definition at line 8619 of file hexrays.hpp.

References hexdsp.

◆ is_ordinary_flow()

bool cinsn_t::is_ordinary_flow ( void  ) const

Check if the statement passes execution to the next statement.

Returns
false if the statement breaks the control flow (like goto, return, etc)

Definition at line 8637 of file hexrays.hpp.

References hexdsp.

◆ new_insn()

cinsn_t & cinsn_t::new_insn ( ea_t  insn_ea)

Create a new statement.

The current statement must be a block. The new statement will be appended to it.

Parameters
insn_eastatement address

Definition at line 8613 of file hexrays.hpp.

References hexdsp.

◆ print()

void cinsn_t::print ( int  indent,
vc_printer_t vp,
use_curly_t  use_curly = CALC_CURLY_BRACES 
) const

Print the statement into many lines.

Parameters
indentindention (number of spaces) for the statement
vpprinter helper class which will receive the generated text.
use_curlyif the statement is a block, how should curly braces be printed.

Definition at line 8625 of file hexrays.hpp.

References hexdsp.

◆ print1()

void cinsn_t::print1 ( qstring *  vout,
const cfunc_t func 
) const

Print the statement into one line.

Currently this function is not available.

Parameters
voutoutput buffer
funcparent function. This argument is used to find out the referenced variable names.

Definition at line 8631 of file hexrays.hpp.

References hexdsp.

◆ replace_by()

void cinsn_t::replace_by ( cinsn_t r)

Replace the statement.

The children of the statement are abandoned (not freed). The statement pointed by 'r' is moved to 'this' statement

Parameters
rthe source statement. It is deleted after being copied

Definition at line 8601 of file hexrays.hpp.

References hexdsp.