mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-22 20:41:20 +00:00
[gamecode] Switch to using type parameter op macros
I wish I'd done it this way years ago (but maybe gcc 2.95 couldn't hack the casts, I do know there were aliasing problems in the past). Anyway, this makes operand access much more consistent for variable sized operands (eg float vs double vs vec4), and is a big part of the new instruction set implementation.
This commit is contained in:
parent
7b0eceda32
commit
bc0a09f452
4 changed files with 266 additions and 275 deletions
|
@ -289,7 +289,7 @@ void ED_Free (progs_t *pr, edict_t *ed);
|
|||
edict_t *ED_EdictNum(progs_t *pr, pr_int_t n) __attribute__((pure));
|
||||
pr_int_t ED_NumForEdict(progs_t *pr, edict_t *e) __attribute__((pure));
|
||||
void ED_Count (progs_t *pr);
|
||||
qboolean PR_EdictValid (progs_t *pr, pr_int_t e) __attribute__((pure));
|
||||
qboolean PR_EdictValid (progs_t *pr, pr_uint_t e) __attribute__((pure));
|
||||
|
||||
// pr_debug.c
|
||||
void ED_Print (progs_t *pr, edict_t *ed, const char *fieldname);
|
||||
|
@ -1900,7 +1900,7 @@ struct progs_s {
|
|||
void (*free_edict) (progs_t *pr, edict_t *ent);
|
||||
pr_type_t *pr_edict_area;
|
||||
int pr_edict_size; ///< # of pr_type_t slots
|
||||
int pr_edict_area_size; ///< for bounds checking, starts at 0
|
||||
pr_uint_t pr_edict_area_size; ///< for bounds checking, starts at 0
|
||||
func_t edict_parse;
|
||||
///@}
|
||||
|
||||
|
|
|
@ -1536,7 +1536,7 @@ PR_PrintStatement (progs_t *pr, dstatement_t *s, int contents)
|
|||
const char *str;
|
||||
char mode = fmt[1], opchar = fmt[2];
|
||||
unsigned parm_ind = 0;
|
||||
pr_int_t opval;
|
||||
pr_uint_t opval;
|
||||
qfot_type_t *optype = &res->void_type;
|
||||
func_t func;
|
||||
|
||||
|
|
|
@ -241,12 +241,12 @@ ED_NumForEdict (progs_t *pr, edict_t *e)
|
|||
}
|
||||
|
||||
qboolean
|
||||
PR_EdictValid (progs_t *pr, pr_int_t e)
|
||||
PR_EdictValid (progs_t *pr, pr_uint_t e)
|
||||
{
|
||||
if (!pr->num_edicts) {
|
||||
return false;
|
||||
}
|
||||
if (e < 0 || e >= pr->pr_edict_area_size)
|
||||
if (e >= pr->pr_edict_area_size)
|
||||
return false;
|
||||
if (e % pr->pr_edict_size)
|
||||
return false;
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue