]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - progs.h
The gcc 2.95 problem was in fact OP_STORE_V doing nasty things to numbers that were...
[xonotic/darkplaces.git] / progs.h
diff --git a/progs.h b/progs.h
index 96b5012884ceb65c8b44288b56840dc2fc03a3b6..7ba47c30df8a1fc8c0c38abe474c97bdb4ff3277 100644 (file)
--- a/progs.h
+++ b/progs.h
@@ -30,6 +30,7 @@ typedef union eval_s
        float                   _float;
        float                   vector[3];
        func_t                  function;
+       int                             ivector[3];
        int                             _int;
        int                             edict;
 } eval_t;
@@ -155,14 +156,14 @@ edict_t *PROG_TO_EDICT(int n);
 #define        G_EDICT(o) (PROG_TO_EDICT(*(int *)&pr_globals[o]))
 #define G_EDICTNUM(o) NUM_FOR_EDICT(G_EDICT(o))
 #define        G_VECTOR(o) (&pr_globals[o])
-#define        G_STRING(o) (pr_strings + *(string_t *)&pr_globals[o])
+#define        G_STRING(o) (PR_GetString(*(string_t *)&pr_globals[o]))
 //#define      G_FUNCTION(o) (*(func_t *)&pr_globals[o])
 
 // FIXME: make these go away?
 #define        E_FLOAT(e,o) (((float*)e->v)[o])
 //#define      E_INT(e,o) (((int*)e->v)[o])
 //#define      E_VECTOR(e,o) (&((float*)e->v)[o])
-#define        E_STRING(e,o) (pr_strings + *(string_t *)&((float*)e->v)[o])
+#define        E_STRING(e,o) (PR_GetString(*(string_t *)&((float*)e->v)[o]))
 
 extern int             type_size[8];
 
@@ -183,5 +184,8 @@ void PR_Execute_ProgsLoaded(void);
 void ED_PrintEdicts (void);
 void ED_PrintNum (int ent);
 
+#define PR_GetString(num) (pr_strings + num)
+#define PR_SetString(s) ((int) (s - pr_strings))
+
 #endif