]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - progsvm.h
eliminated qbyte type, now uses unsigned char throughout the engine for this purpose
[xonotic/darkplaces.git] / progsvm.h
index 1ca690e16668c675847acb343428cf33125bfa8d..daa1b5b3c6bbcb26d618d7105cdc03706b6fb74c 100644 (file)
--- a/progsvm.h
+++ b/progsvm.h
@@ -207,7 +207,7 @@ typedef struct prvm_edict_s
        } fields;
 } prvm_edict_t;
 
-#define PRVM_GETEDICTFIELDVALUE(ed, fieldoffset) (fieldoffset ? (prvm_eval_t *)((qbyte *)ed->fields.vp + fieldoffset) : NULL)
+#define PRVM_GETEDICTFIELDVALUE(ed, fieldoffset) (fieldoffset ? (prvm_eval_t *)((unsigned char *)ed->fields.vp + fieldoffset) : NULL)
 
 /*// this struct is the basic requirement for a qc prog
 typedef struct prvm_pr_globalvars_s
@@ -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;
@@ -272,6 +274,7 @@ typedef struct prvm_prog_s
        // (simple optimization of the free string search)
        int                                     firstfreeknownstring;
        const char                      **knownstrings;
+       unsigned char                           *knownstrings_freeable;
        const char                      ***stringshash;
 
        // all memory allocations related to this vm_prog (code, edicts, strings)
@@ -325,6 +328,10 @@ typedef struct prvm_prog_s
        float                           *time;
        float                           _time;
 
+       // allow writing to world entity fields, this is set by server init and
+       // cleared before first server frame
+       qboolean                        allowworldwrites;
+
        // name of the prog, e.g. "Server", "Client" or "Menu" (used for text output)
        char                            *name; // [INIT]
 
@@ -482,7 +489,7 @@ void PRVM_ED_PrintNum (int ent);
 
 const char *PRVM_GetString(int num);
 int PRVM_SetEngineString(const char *s);
-int PRVM_AllocString(int bufferlength, char **pointer);
+int PRVM_AllocString(size_t bufferlength, char **pointer);
 void PRVM_FreeString(int num);
 
 //============================================================================
@@ -501,9 +508,9 @@ void PRVM_FreeString(int num);
 
 //#define PRVM_SAFENAME
 #ifndef PRVM_SAFENAME
-       #define PRVM_NAME       (prog->name)
+#      define PRVM_NAME        (prog->name)
 #else
-       #define PRVM_NAME       (prog->name ? prog->name : "Unknown prog name")
+#      define PRVM_NAME        (prog->name ? prog->name : "Unknown prog name")
 #endif
 
 // helper macro to make function pointer calls easier