This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
#ifndef PR_COMP_H
#define PR_COMP_H
-typedef int func_t;
+typedef unsigned int func_t;
typedef int string_t;
-typedef enum {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer} etype_t;
+typedef enum etype_e {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer} etype_t;
#define OFS_NULL 0
#define RESERVED_OFS 28
-enum {
+enum opcode_e
+{
OP_DONE,
OP_MUL_F,
OP_MUL_V,
OP_ADD_V,
OP_SUB_F,
OP_SUB_V,
-
+
OP_EQ_F,
OP_EQ_V,
OP_EQ_S,
OP_EQ_E,
OP_EQ_FNC,
-
+
OP_NE_F,
OP_NE_V,
OP_NE_S,
OP_NE_E,
OP_NE_FNC,
-
+
OP_LE,
OP_GE,
OP_LT,
OP_GOTO,
OP_AND,
OP_OR,
-
+
OP_BITAND,
OP_BITOR
};
{
unsigned short op;
signed short a,b,c;
-} dstatement_t;
+}
+dstatement_t;
-typedef struct
+typedef struct ddef_s
{
unsigned short type; // if DEF_SAVEGLOBGAL bit is set
// the variable needs to be saved in savegames
unsigned short ofs;
int s_name;
-} ddef_t;
+}
+ddef_t;
#define DEF_SAVEGLOBAL (1<<15)
#define MAX_PARMS 8
-typedef struct
+typedef struct dfunction_s
{
int first_statement; // negative numbers are builtins
int parm_start;
int locals; // total ints of parms + locals
-
+
int profile; // runtime
-
+
+ int s_name;
+ int s_file; // source file defined in
+
+ int numparms;
+ unsigned char parm_size[MAX_PARMS];
+}
+dfunction_t;
+
+typedef struct mfunction_s
+{
+ int first_statement; // negative numbers are builtins
+ int parm_start;
+ int locals; // total ints of parms + locals
+
+ // these are doubles so that they can count up to 54bits or so rather than 32bit
+ double profile; // runtime
+ double builtinsprofile; // cost of builtin functions called by this function
+ double callcount; // times the functions has been called since the last profile call
+ double totaltime; // total execution time of this function DIRECTLY FROM THE ENGINE
+
int s_name;
int s_file; // source file defined in
-
+
int numparms;
- qbyte parm_size[MAX_PARMS];
-} dfunction_t;
+ unsigned char parm_size[MAX_PARMS];
+}
+mfunction_t;
#define PROG_VERSION 6
-typedef struct
+typedef struct dprograms_s
{
int version;
int crc; // check of header file
-
+
int ofs_statements;
int numstatements; // statement 0 is an error
int ofs_globaldefs;
int numglobaldefs;
-
+
int ofs_fielddefs;
int numfielddefs;
-
+
int ofs_functions;
int numfunctions; // function 0 is an empty
-
+
int ofs_strings;
int numstrings; // first string is a null string
int ofs_globals;
int numglobals;
-
+
int entityfields;
-} dprograms_t;
+}
+dprograms_t;
#endif