Fix defs as constants for vectors and quaternions.

This commit is contained in:
Bill Currie 2011-04-04 21:31:59 +09:00
parent 38b25e0c38
commit c4a398850a
2 changed files with 9 additions and 0 deletions

View file

@ -106,6 +106,7 @@ extern struct symtab_s *current_symtab;
#define D_FLOAT(d) D_var (float, d)
#define D_INT(d) D_var (integer, d)
#define D_VECTOR(d) D_var (vector, d)
#define D_QUAT(d) D_var (quat, d)
#define D_STRING(d) D_var (string, d)
#define D_GETSTR(d) GETSTR (D_STRING (d))
#define D_FUNCTION(d) D_var (func, d)

View file

@ -702,6 +702,10 @@ expr_vector (expr_t *e)
if (e->type == ex_symbol && e->e.symbol->sy_type == sy_const
&& e->e.symbol->type->type == ev_vector)
return e->e.symbol->s.value.v.vector_val;
if (e->type == ex_symbol && e->e.symbol->sy_type == sy_var
&& e->e.symbol->s.def->constant
&& e->e.symbol->s.def->type->type == ev_vector)
return D_VECTOR (e->e.symbol->s.def);
internal_error (e, "not a vector constant");
}
@ -728,6 +732,10 @@ expr_quaternion (expr_t *e)
if (e->type == ex_symbol && e->e.symbol->sy_type == sy_const
&& e->e.symbol->type->type == ev_quat)
return e->e.symbol->s.value.v.quaternion_val;
if (e->type == ex_symbol && e->e.symbol->sy_type == sy_var
&& e->e.symbol->s.def->constant
&& e->e.symbol->s.def->type->type == ev_quat)
return D_QUAT (e->e.symbol->s.def);
internal_error (e, "not a quaternion constant");
}