QuakeForge  0.7.2.210-815cf
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
expr.c File Reference

Functions

expr_t * address_expr (expr_t *e1, expr_t *e2, type_t *t)
 
expr_t * append_expr (expr_t *block, expr_t *e)
 
expr_t * array_expr (expr_t *array, expr_t *index)
 
expr_t * assign_expr (expr_t *e1, expr_t *e2)
 
expr_t * asx_expr (int op, expr_t *e1, expr_t *e2)
 
void backpatch (ex_list_t *list, expr_t *label)
 
expr_t * bool_expr (int op, expr_t *label, expr_t *e1, expr_t *e2)
 
expr_t * branch_expr (int op, expr_t *test, expr_t *label)
 
expr_t * build_do_while_statement (expr_t *statement, int not, expr_t *test, expr_t *break_label, expr_t *continue_label)
 
expr_t * build_for_statement (expr_t *init, expr_t *test, expr_t *next, expr_t *statement, expr_t *break_label, expr_t *continue_label)
 
expr_t * build_function_call (expr_t *fexpr, type_t *ftype, expr_t *params)
 
expr_t * build_if_statement (int not, expr_t *test, expr_t *s1, expr_t *els, expr_t *s2)
 
expr_t * build_state_expr (expr_t *e)
 
expr_t * build_while_statement (int not, expr_t *test, expr_t *statement, expr_t *break_label, expr_t *continue_label)
 
expr_t * cast_error (expr_t *e, type_t *t1, type_t *t2)
 
expr_t * cast_expr (type_t *type, expr_t *e)
 
expr_t * conditional_expr (expr_t *cond, expr_t *e1, expr_t *e2)
 
expr_t * constant_expr (expr_t *e)
 Return a value expression representing the constant stored in e. More...
 
expr_t * convert_bool (expr_t *e, int block)
 
expr_t * convert_from_bool (expr_t *e, type_t *type)
 
void convert_int (expr_t *e)
 
void convert_name (expr_t *e)
 Convert a name to an expression of the appropriate type. More...
 
void convert_nil (expr_t *e, type_t *t)
 
void convert_short (expr_t *e)
 
void convert_short_int (expr_t *e)
 
expr_t * convert_vector (expr_t *e)
 
expr_t * copy_expr (expr_t *e)
 Create a deep copy of an expression tree. More...
 
expr_t * encode_expr (type_t *type)
 
float expr_float (expr_t *e)
 
int expr_integer (expr_t *e)
 
const float * expr_quaternion (expr_t *e)
 
short expr_short (expr_t *e)
 
const char * expr_string (expr_t *e)
 
unsigned expr_uinteger (expr_t *e)
 
const float * expr_vector (expr_t *e)
 
etype_t extract_type (expr_t *e)
 Get the basic type code of the expression result. More...
 
expr_t * field_expr (expr_t *e1, expr_t *e2)
 
expr_t * function_expr (expr_t *fexpr, expr_t *params)
 
type_t * get_type (expr_t *e)
 Get the type descriptor of the expression result. More...
 
expr_t * goto_expr (expr_t *label)
 
int has_function_call (expr_t *e)
 
expr_t * incop_expr (int op, expr_t *e, int postop)
 
int is_compare (int op)
 Check if the op-code is a comparison. More...
 
int is_constant (expr_t *e)
 Check of the expression refers to a constant value. More...
 
int is_float_val (expr_t *e)
 
int is_integer_val (expr_t *e)
 
int is_logic (int op)
 Check if the op-code is a logic operator. More...
 
int is_math_op (int op)
 Check if the op-code is a math operator. More...
 
int is_quaternion_val (expr_t *e)
 
int is_short_val (expr_t *e)
 
int is_string_val (expr_t *e)
 
int is_vector_val (expr_t *e)
 
expr_t * message_expr (expr_t *receiver, keywordarg_t *message)
 
expr_t * new_alias_expr (type_t *type, expr_t *expr)
 
expr_t * new_binary_expr (int op, expr_t *e1, expr_t *e2)
 Create a new binary expression node node. More...
 
expr_t * new_block_expr (void)
 Create a new statement block expression node. More...
 
expr_t * new_bool_expr (ex_list_t *true_list, ex_list_t *false_list, expr_t *e)
 
expr_t * new_entity_expr (int entity_val)
 Create a new entity constant expression node. More...
 
expr_t * new_expr (void)
 Create a new expression node. More...
 
expr_t * new_field_expr (int field_val, type_t *type, def_t *def)
 Create a new field constant expression node. More...
 
expr_t * new_float_expr (float float_val)
 Create a new float constant expression node. More...
 
expr_t * new_func_expr (int func_val, type_t *type)
 Create a new function constant expression node. More...
 
expr_t * new_integer_expr (int integer_val)
 Create a new integer constant expression node. More...
 
expr_t * new_label_expr (void)
 Create a new label expression node. More...
 
const char * new_label_name (void)
 Create a new label name. More...
 
expr_t * new_label_ref (ex_label_t *label)
 Create a new label reference expression node. More...
 
expr_t * new_move_expr (expr_t *e1, expr_t *e2, type_t *type, int indirect)
 Create an expression representing a block copy. More...
 
expr_t * new_name_expr (const char *name)
 Create a new symbol expression node from a name. More...
 
expr_t * new_nil_expr (void)
 Create a new nil expression node. More...
 
expr_t * new_param_expr (type_t *type, int num)
 Create an expression of the correct type that references the specified parameter slot. More...
 
expr_t * new_pointer_expr (int val, type_t *type, def_t *def)
 Create a new pointer constant expression node. More...
 
expr_t * new_quaternion_expr (const float *quaternion_val)
 Create a new quaternion constant expression node. More...
 
expr_t * new_ret_expr (type_t *type)
 Create an expression of the correct type that references the return slot. More...
 
expr_t * new_self_expr (void)
 Create a reference to the global .self entity variable. More...
 
expr_t * new_short_expr (short short_val)
 Create a new short constant expression node. More...
 
expr_t * new_state_expr (expr_t *frame, expr_t *think, expr_t *step)
 Create a new state expression node. More...
 
expr_t * new_string_expr (const char *string_val)
 Create a new string constant expression node. More...
 
expr_t * new_symbol_expr (symbol_t *symbol)
 Create a new symbol reference (non-temporary variable) expression node. More...
 
expr_t * new_temp_def_expr (type_t *type)
 Create a new temporary variable expression node. More...
 
expr_t * new_this_expr (void)
 Create a reference to the .this entity field. More...
 
expr_t * new_uinteger_expr (unsigned uinteger_val)
 Create a new integer constant expression node. More...
 
expr_t * new_unary_expr (int op, expr_t *e1)
 Create a new unary expression node node. More...
 
expr_t * new_value_expr (ex_value_t *value)
 Create a new value expression node. More...
 
expr_t * new_vector_expr (const float *vector_val)
 Create a new vector constant expression node. More...
 
expr_t * new_vector_list (expr_t *e)
 
expr_t * param_mismatch (expr_t *e, int param, const char *fn, type_t *t1, type_t *t2)
 
expr_t * pointer_expr (expr_t *pointer)
 
expr_t * protocol_expr (const char *protocol)
 
expr_t * return_expr (function_t *f, expr_t *e)
 
expr_t * reverse_expr_list (expr_t *e)
 
expr_t * selector_expr (keywordarg_t *selector)
 
expr_t * sizeof_expr (expr_t *expr, struct type_s *type)
 
expr_t * super_expr (class_type_t *class_type)
 
expr_t * test_error (expr_t *e, type_t *t)
 
expr_t * test_expr (expr_t *e)
 
expr_t * think_expr (symbol_t *think_sym)
 
expr_t * type_mismatch (expr_t *e1, expr_t *e2, int op)
 Report a type mismatch error. More...
 
expr_t * unary_expr (int op, expr_t *e)
 

Variables

type_t * ev_types [ev_type_count]