]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - progsvm.h
374
[xonotic/darkplaces.git] / progsvm.h
index b8ebe8008bc62110e075218c59fc6fdac7bd08c4..077058bc4de8090225b5e0126e87a93383ab9d48 100644 (file)
--- a/progsvm.h
+++ b/progsvm.h
@@ -152,7 +152,7 @@ typedef union prvm_eval_s
        int                             edict;
 } prvm_eval_t;
 
-typedef struct prvm_required_field_s 
+typedef struct prvm_required_field_s
 {
        int type;
        const char *name;
@@ -200,7 +200,7 @@ typedef struct prvm_edict_s
                // However, the first one should be preferred.
        } priv;
        // QuakeC fields (stored in dynamically resized array)
-       union 
+       union
        {
                void *vp;
                entvars_t *server;
@@ -261,6 +261,8 @@ typedef struct prvm_prog_s
        int                                     edict_size;                     // in bytes
        int                                     edictareasize;          // LordHavoc: in bytes (for bound checking)
 
+       int                                     *statement_linenums; // NULL if not available
+
        union {
                float *generic;
                globalvars_t *server;
@@ -268,7 +270,11 @@ typedef struct prvm_prog_s
 
        int                                     maxknownstrings;
        int                                     numknownstrings;
+       // this is updated whenever a string is removed or added
+       // (simple optimization of the free string search)
+       int                                     firstfreeknownstring;
        const char                      **knownstrings;
+       const char                      ***stringshash;
 
        // all memory allocations related to this vm_prog (code, edicts, strings)
        mempool_t                       *progs_mempool; // [INIT]
@@ -477,10 +483,9 @@ void PRVM_ED_PrintEdicts_f (void);
 void PRVM_ED_PrintNum (int ent);
 
 const char *PRVM_GetString(int num);
-int PRVM_SetQCString(const char *s);
 int PRVM_SetEngineString(const char *s);
-char *PRVM_AllocString(int bufferlength);
-void PRVM_FreeString(char *s);
+int PRVM_AllocString(int bufferlength, char **pointer);
+void PRVM_FreeString(int num);
 
 //============================================================================