carg_t Struct Reference

Function argument. More...

Inheritance diagram for carg_t:
cexpr_t citem_t

Public Member Functions

void consume_cexpr (cexpr_t *e)
 
 DECLARE_COMPARISONS (carg_t)
 
- Public Member Functions inherited from cexpr_t
bool cpadone (void) const
 Pointer arithmetic correction done for this expression?
 
bool is_odd_lvalue (void) const
 
bool is_fpop (void) const
 
bool is_cstr (void) const
 
bool is_type_partial (void) const
 
bool is_undef_val (void) const
 
bool is_jumpout (void) const
 
bool is_vftable (void) const
 
void set_cpadone (void)
 
void set_type_partial (void)
 
void set_vftable (void)
 
 cexpr_t (ctype_t cop, cexpr_t *_x)
 
 cexpr_t (ctype_t cop, cexpr_t *_x, cexpr_t *_y)
 
 cexpr_t (ctype_t cop, cexpr_t *_x, cexpr_t *_y, cexpr_t *_z)
 
 cexpr_t (mbl_array_t *mba, const lvar_t &v)
 
 cexpr_t (const cexpr_t &r)
 
void swap (cexpr_t &r)
 
cexpr_toperator= (const cexpr_t &r)
 
cexpr_tassign (const cexpr_t &r)
 
 DECLARE_COMPARISONS (cexpr_t)
 
void replace_by (cexpr_t *r)
 Replace the expression. More...
 
void cleanup (void)
 Cleanup the expression. More...
 
void put_number (cfunc_t *func, uint64 value, int nbytes, type_sign_t sign=no_sign)
 Assign a number to the expression. More...
 
void print1 (qstring *vout, const cfunc_t *func) const
 Print expression into one line. More...
 
void calc_type (bool recursive)
 Calculate the type of the expression. More...
 
bool equal_effect (const cexpr_t &r) const
 Compare two expressions. More...
 
bool is_child_of (const citem_t *parent) const
 Verify if the specified item is our parent. More...
 
bool contains_operator (ctype_t needed_op, int times=1) const
 Check if the expression contains the specified operator. More...
 
bool contains_comma (int times=1) const
 Does the expression contain a comma operator?
 
bool contains_insn (int times=1) const
 Does the expression contain an embedded statement operator?
 
bool contains_insn_or_label (void) const
 Does the expression contain an embedded statement operator or a label?
 
bool contains_comma_or_insn_or_label (int maxcommas=1) const
 Does the expression contain a comma operator or an embedded statement operator or a label?
 
bool is_nice_expr (void) const
 Is nice expression? Nice expressions do not contain comma operators, embedded statements, or labels. More...
 
bool is_nice_cond (void) const
 Is nice condition?. More...
 
bool is_call_object_of (const citem_t *parent) const
 Is call object? More...
 
bool is_call_arg_of (const citem_t *parent) const
 Is call argument? More...
 
type_sign_t get_type_sign (void) const
 Get expression sign.
 
bool is_type_unsigned (void) const
 Is expression unsigned?
 
bool is_type_signed (void) const
 Is expression signed?
 
bit_bound_t get_high_nbit_bound () const
 Get max number of bits that can really be used by the expression. More...
 
int get_low_nbit_bound () const
 Get min number of bits that are certainly required to represent the expression. More...
 
bool requires_lvalue (const cexpr_t *child) const
 Check if the expression requires an lvalue. More...
 
bool has_side_effects (void) const
 Check if the expression has side effects. More...
 
bool like_boolean (void) const
 Does the expression look like a boolean expression? In other words, its possible values are only 0 and 1. More...
 
bool is_aliasable (void) const
 Check if the expression if aliasable. More...
 
uint64 numval (void) const
 Get numeric value of the expression. More...
 
bool is_const_value (uint64 _v) const
 Check if the expression is a number with the specified value.
 
bool is_negative_const (void) const
 Check if the expression is a negative number.
 
bool is_non_negative_const (void) const
 Check if the expression is a non-negative number.
 
bool is_non_zero_const (void) const
 Check if the expression is a non-zero number.
 
bool is_zero_const (void) const
 Check if the expression is a zero.
 
bool is_value_used (const citem_t *parent) const
 Does the PARENT need the expression value.
 
bool get_const_value (uint64 *out) const
 Get expression value. More...
 
bool maybe_ptr (void) const
 May the expression be a pointer?
 
cexpr_tget_ptr_or_array (void)
 Find pointer or array child.
 
const cexpr_tfind_op (ctype_t _op) const
 Find the child with the specified operator.
 
cexpr_tfind_op (ctype_t _op)
 
const cexpr_tfind_num_op (void) const
 Find the operand with a numeric value.
 
cexpr_tfind_num_op (void)
 
const cexpr_tfind_ptr_or_array (bool remove_eqsize_casts) const
 Find the pointer operand. More...
 
const cexpr_ttheother (const cexpr_t *what) const
 Get the other operand. More...
 
cexpr_ttheother (const cexpr_t *what)
 
bool get_1num_op (cexpr_t **o1, cexpr_t **o2)
 Get pointers to operands. More...
 
bool get_1num_op (const cexpr_t **o1, const cexpr_t **o2) const
 
- 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_expr (const cexpr_t *e) const
 Does the item contain 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

bool is_vararg
 is a vararg (matches ...)
 
tinfo_t formal_type
 formal parameter type (if known)
 
- Public Attributes inherited from cexpr_t
union {
   cnumber_t *   n
 used for cot_num
 
   fnumber_t *   fpc
 used for cot_fnum
 
   struct {
      union {
         var_ref_t   v
 used for cot_var
 
         ea_t   obj_ea
 used for cot_obj
 
      } 
 
      int   refwidth
 how many bytes are accessed? (-1: none)
 
   } 
 
   struct {
      cexpr_t *   x
 the first operand of the expression
 
      union {
         cexpr_t *   y
 the second operand of the expression
 
         carglist_t *   a
 argument list (used for cot_call)
 
         uint32   m
 member offset (used for cot_memptr, cot_memref) for unions, the member number
 
      } 
 
      union {
         cexpr_t *   z
 the third operand of the expression
 
         int   ptrsize
 memory access size (used for cot_ptr, cot_memptr)
 
      } 
 
   } 
 
   cinsn_t *   insn
 an embedded statement, they are prohibited at the final maturity stage (CMAT_FINAL)
 
   char *   helper
 helper name (used for cot_helper)
 
   char *   string
 string constant (used for cot_str)
 
}; 
 
tinfo_t type
 expression type. must be carefully maintained
 
uint32 exflags
 Expression attributes
 
- 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

Function argument.

Examples:
hexrays_sample2.cpp.

Definition at line 6031 of file hexrays.hpp.