extern int eval_cursor_trace_endpos;
extern int eval_cursor_trace_ent;
extern int eval_colormod;
+extern int eval_playermodel;
+extern int eval_playerskin;
#define GETEDICTFIELDVALUE(ed, fieldoffset) (fieldoffset ? (eval_t *)((qbyte *)ed->v + fieldoffset) : NULL)
extern dprograms_t *progs;
extern mfunction_t *pr_functions;
extern char *pr_strings;
+extern int pr_stringssize;
extern ddef_t *pr_globaldefs;
extern ddef_t *pr_fielddefs;
extern dstatement_t *pr_statements;
extern int pr_edict_size; // in bytes
extern int pr_edictareasize; // LordHavoc: for bounds checking
+extern int pr_maxknownstrings;
+extern int pr_numknownstrings;
+extern const char **pr_knownstrings;
+
//============================================================================
void PR_Init (void);
+void PR_Shutdown (void);
void PR_ExecuteProgram (func_t fnum, const char *errormessage);
-void PR_LoadProgs (void);
+void PR_LoadProgs (const char *progsname);
+
+#define PR_Alloc(buffersize) _PR_Alloc(buffersize, __FILE__, __LINE__)
+#define PR_Free(buffer) _PR_Free(buffer, __FILE__, __LINE__)
+#define PR_FreeAll() _PR_FreeAll(__FILE__, __LINE__)
+void *_PR_Alloc (size_t buffersize, const char *filename, int fileline);
+void _PR_Free (void *buffer, const char *filename, int fileline);
+void _PR_FreeAll (const char *filename, int fileline);
void PR_Profile_f (void);
void ED_Free (edict_t *ed);
void ED_ClearEdict (edict_t *e);
-char *ED_NewString (const char *string);
-// returns a copy of the string allocated from the server's string heap
-
void ED_Print(edict_t *ed);
void ED_Write (qfile_t *f, edict_t *ed);
const char *ED_ParseEdict (const char *data, edict_t *ent);
void ED_PrintEdicts (void);
void ED_PrintNum (int ent);
-#define PR_GetString(num) (pr_strings + num)
-#define PR_SetString(s) ((s) != NULL ? (int) (s - pr_strings) : 0)
+const char *PR_GetString(int num);
+int PR_SetQCString(const char *s);
+int PR_SetEngineString(const char *s);
+char *PR_AllocString(int bufferlength);
+void PR_FreeString(char *s);
#endif