typedef struct prvm_edict_private_s
{
qboolean free;
- float freetime;
+ float freetime; // realtime of last change to "free" (i.e. also set on allocation)
int mark; // used during leaktest (0 = unref, >0 = referenced); special values during server physics:
#define PRVM_EDICT_MARK_WAIT_FOR_SETORIGIN -1
#define PRVM_EDICT_MARK_SETORIGIN_CAUGHT -2
prvm_prog_funcoffsets_t;
// stringbuffer flags
-#define STRINGBUFFER_SAVED 1 // saved in savegames
+#define STRINGBUFFER_SAVED 1 // saved in savegames
+#define STRINGBUFFER_QCFLAGS 1 // allowed to be set by QC
+#define STRINGBUFFER_TEMP 128 // internal use ONLY
typedef struct prvm_stringbuffer_s
{
int max_strings;
typedef struct prvm_prog_s
{
double starttime; // system time when PRVM_Prog_Load was called
+ double inittime; // system time when QC initialization code finished (any entity created before is not a leak)
double profiletime; // system time when last PRVM_CallProfile was called (or PRVM_Prog_Load initially)
- unsigned int id; // increasing unique id of progs instance
mfunction_t *functions;
+ int functions_covered;
char *strings;
int stringssize;
ddef_t *fielddefs;
int numglobals;
int *statement_linenums; // NULL if not available
+ int *statement_columnnums; // NULL if not available
double *statement_profile; // only incremented if prvm_statementprofiling is on
+ int statements_covered;
+ double *explicit_profile; // only incremented if prvm_statementprofiling is on
+ int explicit_covered;
+ int numexplicitcoveragestatements;
union {
prvm_vec_t *fp;
// printed together with backtraces
const char *statestring;
+ struct animatemodel_cache *animatemodel_cache;
+
// prvm_builtin_mem_t *mem_list;
// now passed as parameter of PRVM_LoadProgs
#define PRVM_ProgLoaded(n) (PRVM_GetProg(n)->loaded)
#define SVVM_prog (&prvm_prog_list[PRVM_PROG_SERVER])
#define CLVM_prog (&prvm_prog_list[PRVM_PROG_CLIENT])
+#ifdef CONFIG_MENU
#define MVM_prog (&prvm_prog_list[PRVM_PROG_MENU])
+#endif
//============================================================================
// prvm_cmds part
void CLVM_init_cmd(prvm_prog_t *prog);
void CLVM_reset_cmd(prvm_prog_t *prog);
+#ifdef CONFIG_MENU
void MVM_init_cmd(prvm_prog_t *prog);
void MVM_reset_cmd(prvm_prog_t *prog);
+#endif
void VM_Cmd_Init(prvm_prog_t *prog);
void VM_Cmd_Reset(prvm_prog_t *prog);
#ifdef PROFILING
void SVVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
void CLVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
+#ifdef CONFIG_MENU
void MVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
+#endif
#else
#define SVVM_ExecuteProgram PRVM_ExecuteProgram
#define CLVM_ExecuteProgram PRVM_ExecuteProgram
+#ifdef CONFIG_MENU
#define MVM_ExecuteProgram PRVM_ExecuteProgram
+#endif
void PRVM_ExecuteProgram (prvm_prog_t *prog, func_t fnum, const char *errormessage);
#endif
void VM_UpdateEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed, const dp_model_t *edmodel, const frameblend_t *frameblend);
void VM_RemoveEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed);
+void PRVM_ExplicitCoverageEvent(prvm_prog_t *prog, mfunction_t *func, int statement);
+
#endif