mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-11 03:33:00 +00:00
rename ev_int and ex_int to ev_integer and ex_integer. create type_integer
and def_integer (do I need that?), clean up and or coment on XXX and FIXME
This commit is contained in:
parent
735cd909c0
commit
55ac55c7ac
7 changed files with 42 additions and 37 deletions
|
@ -36,7 +36,7 @@ typedef enum {
|
|||
ev_func,
|
||||
ev_pointer,
|
||||
ev_quaternion,
|
||||
ev_int,
|
||||
ev_integer,
|
||||
|
||||
ev_type_count // not a type, gives number of types
|
||||
} etype_t;
|
||||
|
|
|
@ -13,7 +13,7 @@ typedef enum {
|
|||
ex_func,
|
||||
ex_pointer,
|
||||
ex_quaternion,
|
||||
ex_int,
|
||||
ex_integer,
|
||||
} expr_type;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -331,6 +331,7 @@ extern type_t type_function;
|
|||
extern type_t type_pointer;
|
||||
extern type_t type_floatfield;
|
||||
extern type_t type_quaternion;
|
||||
extern type_t type_integer;
|
||||
|
||||
extern def_t def_void;
|
||||
extern def_t def_string;
|
||||
|
@ -341,6 +342,7 @@ extern def_t def_field;
|
|||
extern def_t def_function;
|
||||
extern def_t def_pointer;
|
||||
extern def_t def_quaternion;
|
||||
extern def_t def_integer;
|
||||
|
||||
struct function_s
|
||||
{
|
||||
|
|
|
@ -26,7 +26,7 @@ static etype_t qc_types[] = {
|
|||
ev_func, // ex_func
|
||||
ev_pointer, // ex_pointer
|
||||
ev_quaternion, // ex_quaternion
|
||||
ev_int, // ex_int
|
||||
ev_integer, // ex_integer
|
||||
};
|
||||
|
||||
static type_t *types[] = {
|
||||
|
@ -39,7 +39,7 @@ static type_t *types[] = {
|
|||
&type_function,
|
||||
&type_pointer,
|
||||
&type_quaternion,
|
||||
//XXX&type_int,
|
||||
&type_integer,
|
||||
};
|
||||
|
||||
static expr_type expr_types[] = {
|
||||
|
@ -52,7 +52,7 @@ static expr_type expr_types[] = {
|
|||
ex_func, // ev_func
|
||||
ex_pointer, // ev_pointer
|
||||
ex_quaternion, // ev_quaternion
|
||||
ex_int, // ev_int
|
||||
ex_integer, // ev_integer
|
||||
};
|
||||
|
||||
static const char *type_names[] = {
|
||||
|
@ -89,7 +89,7 @@ get_type (expr_t *e)
|
|||
case ex_pointer:
|
||||
case ex_quaternion:
|
||||
return qc_types[e->type];
|
||||
case ex_int: //FIXME?
|
||||
case ex_integer: //FIXME int should stay int, at least until code generation
|
||||
e->type = ex_float;
|
||||
e->e.float_val = e->e.int_val;
|
||||
return ev_float;
|
||||
|
@ -114,7 +114,7 @@ error (expr_t *e, const char *fmt, ...)
|
|||
fputs ("\n", stderr);
|
||||
if (e) {
|
||||
e = new_expr ();
|
||||
e->type = ex_int;
|
||||
e->type = ex_integer;
|
||||
}
|
||||
va_end (args);
|
||||
pr_error_count++;
|
||||
|
@ -347,7 +347,7 @@ print_expr (expr_t *e)
|
|||
case ex_field:
|
||||
case ex_func:
|
||||
case ex_pointer:
|
||||
case ex_int:
|
||||
case ex_integer:
|
||||
printf ("%d", e->e.int_val);
|
||||
break;
|
||||
}
|
||||
|
@ -372,27 +372,27 @@ do_op_string (int op, expr_t *e1, expr_t *e2)
|
|||
e1->e.string_val = buf;
|
||||
break;
|
||||
case LT:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = strcmp (s1, s2) < 0;
|
||||
break;
|
||||
case GT:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = strcmp (s1, s2) > 0;
|
||||
break;
|
||||
case LE:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = strcmp (s1, s2) <= 0;
|
||||
break;
|
||||
case GE:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = strcmp (s1, s2) >= 0;
|
||||
break;
|
||||
case EQ:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = strcmp (s1, s2) == 0;
|
||||
break;
|
||||
case NE:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = strcmp (s1, s2) != 0;
|
||||
break;
|
||||
default:
|
||||
|
@ -435,27 +435,27 @@ do_op_float (int op, expr_t *e1, expr_t *e2)
|
|||
e1->e.float_val += f1 || f2;
|
||||
break;
|
||||
case LT:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = f1 < f2;
|
||||
break;
|
||||
case GT:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = f1 > f2;
|
||||
break;
|
||||
case LE:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = f1 <= f2;
|
||||
break;
|
||||
case GE:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = f1 >= f2;
|
||||
break;
|
||||
case EQ:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = f1 == f2;
|
||||
break;
|
||||
case NE:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = f1 != f2;
|
||||
break;
|
||||
default:
|
||||
|
@ -484,13 +484,13 @@ do_op_vector (int op, expr_t *e1, expr_t *e2)
|
|||
e1->e.float_val = DotProduct (v1, v2);
|
||||
break;
|
||||
case EQ:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = (v1[0] == v2[0])
|
||||
&& (v1[1] == v2[1])
|
||||
&& (v1[2] == v2[2]);
|
||||
break;
|
||||
case NE:
|
||||
e1->type = ex_int;
|
||||
e1->type = ex_integer;
|
||||
e1->e.int_val = (v1[0] == v2[0])
|
||||
|| (v1[1] != v2[1])
|
||||
|| (v1[2] != v2[2]);
|
||||
|
@ -563,7 +563,7 @@ test_expr (expr_t *e, int test)
|
|||
return unary_expr ('!', e);
|
||||
|
||||
switch (get_type (e)) {
|
||||
case ev_int://FIXME
|
||||
case ev_integer://FIXME just return e when int opcodes are supported
|
||||
case ev_type_count:
|
||||
case ev_void:
|
||||
error (e, "internal error");
|
||||
|
@ -694,7 +694,7 @@ unary_expr (int op, expr_t *e)
|
|||
: e->e.expr.type;
|
||||
return n;
|
||||
}
|
||||
case ex_int:
|
||||
case ex_integer:
|
||||
e->e.int_val *= -1;
|
||||
return e;
|
||||
case ex_float:
|
||||
|
@ -732,29 +732,29 @@ unary_expr (int op, expr_t *e)
|
|||
n->e.expr.type = &type_float;
|
||||
return n;
|
||||
}
|
||||
case ex_int:
|
||||
case ex_integer:
|
||||
e->e.int_val = !e->e.int_val;
|
||||
return e;
|
||||
case ex_float:
|
||||
e->e.int_val = !e->e.float_val;
|
||||
e->type = ex_int;
|
||||
e->type = ex_integer;
|
||||
return e;
|
||||
case ex_string:
|
||||
e->e.int_val = !e->e.string_val || !e->e.string_val[0];
|
||||
e->type = ex_int;
|
||||
e->type = ex_integer;
|
||||
return e;
|
||||
case ex_vector:
|
||||
e->e.int_val = !e->e.vector_val[0]
|
||||
&& !e->e.vector_val[1]
|
||||
&& !e->e.vector_val[2];
|
||||
e->type = ex_int;
|
||||
e->type = ex_integer;
|
||||
return e;
|
||||
case ex_quaternion:
|
||||
e->e.int_val = !e->e.quaternion_val[0]
|
||||
&& !e->e.quaternion_val[1]
|
||||
&& !e->e.quaternion_val[2]
|
||||
&& !e->e.quaternion_val[3];
|
||||
e->type = ex_int;
|
||||
e->type = ex_integer;
|
||||
return e;
|
||||
case ex_entity:
|
||||
case ex_field:
|
||||
|
@ -790,7 +790,8 @@ function_expr (expr_t *e1, expr_t *e2)
|
|||
}
|
||||
|
||||
if (e1->type == ex_def && e2 && e2->type == ex_string) {
|
||||
//XXX eww, I hate this, but it's needed :(
|
||||
//FIXME eww, I hate this, but it's needed :(
|
||||
//FIXME make a qc hook? :)
|
||||
def_t *func = e1->e.def;
|
||||
def_t *e = PR_ReuseConstant (e2, 0);
|
||||
|
||||
|
@ -1086,7 +1087,7 @@ emit_sub_expr (expr_t *e, def_t *dest)
|
|||
case ex_func:
|
||||
case ex_pointer:
|
||||
case ex_quaternion:
|
||||
case ex_int:
|
||||
case ex_integer:
|
||||
return PR_ReuseConstant (e, 0);
|
||||
}
|
||||
return 0;
|
||||
|
@ -1176,7 +1177,7 @@ emit_expr (expr_t *e)
|
|||
case ex_func:
|
||||
case ex_pointer:
|
||||
case ex_quaternion:
|
||||
case ex_int:
|
||||
case ex_integer:
|
||||
warning (e, "Ignoring useless expression");
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -198,8 +198,8 @@ PR_ReuseConstant (expr_t *expr, def_t *def)
|
|||
tab = pointer_imm_defs;
|
||||
type = &type_pointer;
|
||||
break;
|
||||
case ex_int:
|
||||
e.e.float_val = e.e.int_val; //FIXME
|
||||
case ex_integer:
|
||||
e.e.float_val = e.e.int_val; //FIXME want ints rather than floats
|
||||
case ex_float:
|
||||
sprintf (rep, "\001float:%08X\001", e.e.int_val);
|
||||
tab = float_imm_defs;
|
||||
|
|
|
@ -61,6 +61,7 @@ type_t type_field = { ev_field, &def_field };
|
|||
type_t type_function = { ev_func, &def_function, NULL, &type_void };
|
||||
type_t type_pointer = { ev_pointer, &def_pointer };
|
||||
type_t type_quaternion = { ev_quaternion, &def_quaternion };
|
||||
type_t type_integer = { ev_integer, &def_integer };
|
||||
|
||||
type_t type_floatfield = { ev_field, &def_field, NULL, &type_float };
|
||||
|
||||
|
@ -75,6 +76,7 @@ def_t def_field = { &type_field, "temp" };
|
|||
def_t def_function = { &type_function, "temp" };
|
||||
def_t def_pointer = { &type_pointer, "temp" };
|
||||
def_t def_quaternion = { &type_quaternion, "temp"};
|
||||
def_t def_integer = { &type_integer, "temp"};
|
||||
|
||||
def_t def_ret, def_parms[MAX_PARMS];
|
||||
|
||||
|
|
|
@ -216,13 +216,13 @@ opt_initializer
|
|||
if (current_type->type != ev_func) {
|
||||
error (0, "%s is not a function", current_def->name);
|
||||
} else {
|
||||
if ($3->type != ex_int && $3->type != ex_float) {
|
||||
if ($3->type != ex_integer && $3->type != ex_float) {
|
||||
error (0, "invalid constant for = #");
|
||||
} else {
|
||||
function_t *f;
|
||||
|
||||
f = new_function ();
|
||||
f->builtin = $3->type == ex_int
|
||||
f->builtin = $3->type == ex_integer
|
||||
? $3->e.int_val : (int)$3->e.float_val;
|
||||
f->def = current_def;
|
||||
build_function (f);
|
||||
|
@ -500,7 +500,7 @@ const
|
|||
| INT_VAL
|
||||
{
|
||||
$$ = new_expr ();
|
||||
$$->type = ex_int;
|
||||
$$->type = ex_integer;
|
||||
$$->e.int_val = $1;
|
||||
}
|
||||
;
|
||||
|
|
Loading…
Reference in a new issue